정렬 알고리즘
1. Bubble Sort(거품 정렬) ⇠
2. Selection Sort(선택 정렬)
3. Insertion Sort(삽입 정렬)
4. Quick Sort(퀵 정렬)
5. Merge Sort(병합 정렬)
6. Heap Sort(힙 정렬)
7. Radix Sort(기수 정렬)
8. Counting Sort(계수 정렬)
public class Bubble {
public static void sort(int[] arr) {
for (int i = arr.length - 1; i > 0; i--) {
// 1. i 길이 만큼 arr 앞에서부터 인접한 두 수 비교
// 2. 한번의 loop이 끝나면 맨 뒤에 있는 수는 정렬된 수 이므로 길이를 1 줄이고 다음 loop 진행
for (int j = 0; j <= i; j++) {
if (arr[j] > arr[j+1]) {
swap(arr, j, j+1);
}
}
}
}
private static void swap(int[] arr, int a, int b) {
int tmp = arr[a];
arr[a] = arr[b];
arr[b] = tmp;
}
}
O(1)
의 공간 복잡도를 가진다.O(N)
의 시간을 소모하며, 하나의 루프에서는 인접한 값들의 대소 비교 및 자리 교대를 위해서 O(N)
의 시간이 필요하게 된다. 따라서 총 시간 복잡도는 O(N^2)
이다.O(N)
까지도 시간 복잡도를 향상 시킬 수 있다.