거품 정렬은 서로 인접한 두 원소의 대소를 비교하고, 조건에 맞지 않다면 자리를 교환하며 정렬하는 알고리즘이다. (선택 정렬과 유사한 알고리즘)
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.
// swap(arr[j-1], arr[j])
temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
(출처 : https://gyoogle.dev/blog/algorithm/Bubble%20Sort.html)
시간복잡도를 계산하면, (n-1) + (n-2) + (n-3) + ... + 2 + 1 => n(n-1)/2 이므로 O(n^2)이다. 거품 정렬은 정렬이 돼있던 안돼있던 2개의 원소를 비교하기 때문에 최선, 평균, 최악의 경우 모두 시간복잡도가 O(n^2)으로 동일하다.
주어진 배열 안에서 교환(swap)을 통해, 정렬이 수행되므로 O(n)이다.
참고자료 : https://gyoogle.dev/blog/algorithm/Bubble%20Sort.html