자바 버블 정렬 마스터하기: 명확한 예제와 단계별 설명
버블 정렬이란?
버블 정렬은 리스트를 반복적으로 순회하며 인접한 항목을 비교하고 잘못된 순서면 교환하는 고전적인 비교 기반 알고리즘입니다. 각 패스마다 다음으로 큰 값이 최종 위치로 이동하므로 '버블'이라는 이름이 붙었습니다. 단순하지만 정렬 메커니즘 이해에 훌륭한 기초가 됩니다.
자바 구현
다음 프로그램은 정수 배열에 버블 정렬을 시연합니다. 알고리즘 동작을 볼 수 있도록 상세한 디버깅 정보를 출력합니다.
package com.guru99;
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {860, 8, 200, 9};
System.out.println("---정렬 전 배열---");
printArray(arr);
bubbleSort(arr); // 버블 정렬로 정렬
System.out.println("---정렬 후 배열---");
printArray(arr);
}
static void bubbleSort(int[] array) {
int n = array.length;
for (int i = 0; i < n; i++) {
System.out.println("정렬 패스 " + (i + 1));
for (int j = 1; j < (n - i); j++) {
System.out.println("비교: " + array[j - 1] + " 와 " + array[j]);
if (array[j - 1] > array[j]) {
// 요소 교환
int temp = array[j - 1];
array[j - 1] = array[j];
array[j] = temp;
System.out.println(array[j] + " is greater than " + array[j - 1]);
System.out.println("요소 교환: 교환 후 새 배열");
printArray(array);
}
}
}
}
static void printArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
System.out.println();
}
}
프로그램 출력
860 8 200 9
정렬 패스 1
비교: 860 와 8
860 is greater than 8
요소 교환: 교환 후 새 배열
8 860 200 9
비교: 860 와 200
860 is greater than 200
요소 교환: 교환 후 새 배열
8 200 860 9
비교: 860 와 9
860 is greater than 9
요소 교환: 교환 후 새 배열
8 200 9 860
정렬 패스 2
비교: 8 와 200
비교: 200 와 9
200 is greater than 9
요소 교환: 교환 후 새 배열
8 9 200 860
정렬 패스 3
비교: 8 와 9
정렬 패스 4
---정렬 후 배열---
8 9 200 860