인접한 두 개의 원소를 비교하며 자리를 계속 교환하며 정렬하는 알고리즘
void BubbleSort() {
int[] nums = {1000, 400, 12, -59, 328, 121, -3};
// loop 1
for(int i = 0; i < nums.length; i++) {
// loop2
for(int j = 0; j < nums.length-(i+1); j++) {
if(nums[j] > nums[j+1]) {
int temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(nums));
}
loop 1: 정렬에서 제외될 원소의 갯수를 의미한다.
loop 2: j 번째 원소와 j+1 번째 원소를 비교한 후 자리를 바꿔준다. i의 값이 증가할 때마다 순회할 원소의 갯수가 하나씩 감소한다.
각 회전에서의 비교 횟수를 더해보면 위와 같으므로, 모든 경우에서 O(N^2) 이다.
단 하나의 배열에서만 진행되므로 O(n) 이다.
[참고]