학습장/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년 출제되었던 문제부터 하나하나 하기도 괜찮을 성 싶은데, 이번 시험은 그래도 특별했으니까요.ㅡ_ㅡ;