학습장/Algorithm
1. 3. 1. 1차원 배열의 자료 오름차순으로 정렬하기 JAVA.
Shin Jaehyun
2018. 4. 21. 05:39
package algorithm_test;
import java.util.Scanner;
public class Bubblesort_1DimensionalArray {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 먼저 배열을 만들자! 들어갈 숫자는 10개
int[] array = new int[10];
int rotN = 0; // 회전수
int tempN = 0; // 임시변수
// 숫자를 입력받아야겠지.
Scanner scan = new Scanner(System.in);
int cntA = 0;
do { // 책에서 보았던건 주로 do, while 문장이었는데... 주로 for, if만 써버릇해서, 익힐겸 굳이 do, while 써봅니다.
System.out.print("배열에 들어갈 숫자를 입력하세요.");
array[cntA] = scan.nextInt();
cntA++;
} while (cntA < array.length);
System.out.printf("\n1차원 array에 입력된 숫자는 \n \n");
for (int i = 0; i <= array.length - 1; i++) {
System.out.printf("[%d] \t", array[i]);
}
System.out.println("이며, \n ");
do {
rotN++;
int ordN = -1; // 배열의 첨자
do {
ordN++;
if (array[ordN] > array[ordN + 1]) {
tempN = array[ordN];
array[ordN] = array[ordN + 1];
array[ordN + 1] = tempN;
}
} while (ordN < (cntA - 1) - rotN);
} while (rotN < cntA - 1);
System.out.printf("%d회 회전한 \n", rotN);
System.out.printf("버블정렬로 정렬한 순서는 \n \n");
for (int i = 0; i <= array.length - 1; i++) {
System.out.printf("[%d] \t", array[i]);
}
System.out.println("입니다.");
scan.close();
}
}
주로 while 문을 먼저 쓰고 do는 거의 안써버릇했었는데, 이것도 조금씩 쓰다보니 괜찮습니다. 쓰면서 대략 '~ 해라', '~하는 동안' 뭐 그런 느낌이랄까요.
더불어 출력할때 %d, 사용하는 것도 꽤나 유용했습니다. 아주 사소하게 하나씩 배우고 있어요.
다 해놓고 교재를 보니 순서도에는 9, 코드에는 8로 회전수를 비교하고 있는데, 그냥 놓아뒀습니다. 중요한건 순서도에서 1차원 배열 [10]인 경우 1~10까지 주로 세고,
코딩할적엔 0~9까지라는것만 알면.... 어째 다른것들을 좀 하다가 머리도 식힐겸 해봤는데, 점점 나아지는 것 같아서 기분 좋습니다.
다음부터는 어쨌든 교재에 있는 것들 하나하나 처음부터 해나갈 계획입니다. 그래서 상대적으로 쉬울 것 같아요.
2005년 출제되었던 문제부터 하나하나 하기도 괜찮을 성 싶은데, 이번 시험은 그래도 특별했으니까요.ㅡ_ㅡ;