본문 바로가기

JAVA/DAY 08 _ 23.08.28

Sorting Algoritm

// Q. 1 2 4 7 8 9 로 정렬이 돼서 나오게 하려면?

int [] arr = {7,4,2,1,9,8};

for(int i = 0 ; i < arr.length ; i++) {
    System.out.println(arr[i]);
}

 

 

// 정렬(sorting algorism)

// 1. 선택 정렬 (7을 4,2,1,9,8과 각각 비교해서 7이 더크면 자리를 바꾼다!)

System.out.println("=====selection sort=====");

for(int x = 0 ; x < arr.length-1 ; x++) {			 // 5번만 비교하면되니까 6-1한거지
                                                  		// x : 0 1 2 3 4
    for(int y = x + 1 ; y < arr.length ; y++) {			// y : 1 2 3 4 5

        if(arr[x] > arr[y]) {

            int temp = arr[x];					// 2자리를 바꾸려면 3개를 생성해야해....
            arr[x] = arr[y];					// temp = 7, x = 4, y = 7 이렇게 된다
            arr[y] = temp;					// 순서 잘생각하기!!!!!!!!
        }	
    }
}
for(int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}

 

 

// 2. 버블 정렬 (인접한 두 원소를 비교 -> 2개씩 돌면서 큰걸 뒤로 보내면 1번째 싸이클에 최대값이 맨끝으로 가겠지?)

System.out.println("=====bubble sort=====");	// 7 4 2 1 9 8


for(int x = arr.length - 1 ; x > 0; x--) {		    	 // x : 5	 / 4 		/ 3
    for(int y = 0 ; y < x ; y++) {				// y : 0 1 2 3 4 / 0 1 2 3  / 0 1 2...

        if(arr[y] > arr[y+1]) {					// y : 7, y+1 : 4

            int temp = arr[y];			// temp = 7, y = 4, y+1 = 7
                                                // 472198 / 427198 / 421798 / 421798 / 421789 --> x가 5일때
            arr[y] = arr[y+1];			// temp = 4, y = 2, y+1 = 4
            arr[y+1] = temp;			// 241789 / 214789 / 214789 / 214789 --> x가 4일때

        }
    }	
}
for(int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}

 

'JAVA > DAY 08 _ 23.08.28' 카테고리의 다른 글

Q. 배열을 활용해서 2~100 정수 중 소수를 구해보자  (0) 2023.09.10
foreach  (0) 2023.09.10
문자열 비교  (0) 2023.09.04
참조 주소  (0) 2023.09.04
이중배열2  (0) 2023.09.04