서로 인접한 두 원소의 대소를 비교하고, 조건에 맞지 않다면 자리를 교환하며 정렬하는 알고리즘
앞에서부터 현재 원소와 바로 다음의 원소를 비교한다.
현재 원소가 다음 원소보다 크면 원소를 교환한다.
다음 원소로 이동하여 해당 원소와 그 다음원소를 비교한다.
이 때, 각 라운드를 진행 할 때마다 뒤에서부터 한 개씩 정렬되기 때문에, 라운드가 진행 될 때마다 한 번씩 줄면서 비교하게 된다.
한마디로 정리하자면 이렇다.
총 라운드는 배열 크기 - 1 번 진행되고,
각 라운드별 비교 횟수는 배열 크기 - 라운드 횟수 만큼 비교한다.
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {30, 5, 21, 10, 4, 13, 8, 25, 19, 1};
//-i를 하는 이유? -> 제일 큰수가 맨 마지막으로 정렬이 됨 (맨 마지막은 비교를 안해도 된다는 것)
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
//1 4 5 8 10 13 19 21 25 30
for (int i = 0; i < arr.length; i++) {
System.out.printf("%d ", arr[i]);
}
}
}