버블 정렬은 인접한 두 데이터를 비교하면서, 큰 값을 오른쪽으로 하나씩 밀어내며 정렬하는 방식이다.
정렬이 끝날수록 가장 큰 값들이 차례로 오른쪽 끝에 쌓이게 된다.
public static void solution(int length, int[] arr) {
// 밀어주는 반복문
for (int i = 0; i < length - 1; i++) {
System.out.println((i + 1) + " " + Arrays.toString(arr));
// 각 값 비교 후 swap 반복
for (int j = 0; j < length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) { // 오름차순
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
length - 1 - i는 이미 정렬된 구간을 제외하기 위한 조건이다.arr[j] > arr[j + 1] → 오름차순arr[j] < arr[j + 1] → 내림차순버블 정렬은 구현이 간단하지만, 데이터 개수가 많을수록 비효율적이다.
그래도 정렬의 기본 원리를 이해하기에 좋은 알고리즘이다.