Bubble Sort는 Selection Sort와 유사한 알고리즘으로 서로 인접한 두 원소의 대소를 비교하고, 조건에 맞지 않다면 자리를 교환하며 정렬하는 알고리즘이다.
void bubbleSort(int[] arr) {
int temp = 0;
for(int i = 0; i < arr.length; i++) { // 1
for(int j = 1; j < arr.length-i; j++) { // 2
if(arr[j-1] > arr[j]) { // 3
temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
시간복잡도를 계산하면 (n-1) + (n-2) + ... + 2 + 1 => n(n-1)/2이므로, O(n^2)이다. 버블정렬은정렬이 되어있던, 되어있지않던 2개의 원소를 비교하기 때문에 최선, 평균, 최악의 경우 모두 시간복잡도가 O(n^2)으로 동일하다.
주어진 배열 안에서 교환을 통해, 정렬이 수행되므로 O(n)이다.