정렬
정상희
i) 정렬 연습
첫번째 바퀴
배열의 첫번째 index와 그 다음 index들과의 비교열차를 돌 것이며, 오름차순으로 정렬합니다.
끝났을 때
가장 작은 숫자가 0번 자리에 옵니다.
Java
복사
두번째 바퀴
배열의 두 번째 index와 그 다음 index들과 비교하며, 더 작은 숫자가 존재할 경우 두 값을 바꿉니다.
끝났을 때
두번째로 작은 숫자가 1번 자리에 옵니다.
Java
복사
•
실습 코드
import java.util.Arrays;
public class sortPractice {
public void sort(int[] arr){
for(int i = 0; i<arr.length; i++ ){
System.out.print("현재 index["+i+"]를 비교합니다.");
System.out.println("arr["+i+"]="+arr[i]);
for(int j = i+1; j<arr.length; j++){
System.out.println("arr["+j+"]="+arr[j]);
if(arr[i] > arr[j]) {
int temp = 0;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
System.out.println("swap"+Arrays.toString(arr));
}
}
}
}
public static void main(String[] args) {
sortPractice s = new sortPractice();
int[] arr = new int[]{2, 7, 3, 9 , 28, 11};
s.sort(arr);
}
}
Java
복사
ii) 버블 정렬
•
버블 정렬은 이웃한 데이터들의 크고 작음을 비교한 뒤, 정렬 조건에 맞추어 이동 시키며 정렬하는 알고리즘입니다.
•
최대 값이 서서히 뒤로 옮겨지는 모습이 마치 사이다의 거품이 올라가는 모습과 비슷하다는 뜻에서 버블 정렬이라고 불립니다.
•
시간 복잡도 O(N^2) - 매우 느립니다
•
실습 코드
import java.util.Arrays;
public class bubbleSort {
public void sort(int[] arr) {
for (int i = 0; i < arr.length-1; i++) {
System.out.println((i+1)+"바퀴");
for (int j = 0; j < arr.length-1; j++) { // arr[j+1]과 비교할 것이므로, 길이 n-1
System.out.printf("현재 index[" + j + "]와 index["+(j+1)+"]를 비교합니다.\n");
if (arr[j] > arr[j+1]) { // 다음 index의 값이 더 작으면 swap
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
System.out.println("버블 정렬 과정" + Arrays.toString(arr));
}
}
}
public static void main(String[] args) {
bubbleSort s = new bubbleSort();
int[] arr = new int[]{2, 7, 3, 9, 28, 11};
s.sort(arr);
}
}
Java
복사