Post

버블 정렬

버블 정렬

버블 정렬은 두 인접한 데이터의 크기를 비교해 정렬하는 방법입니다.

정렬 방법

bubble

  • 비교 연산이 필요한 범위를 설정한다.
  • 인접한 데이터 값을 비교한다.
  • swap 조건에 부합하면 swap 연산을 수행한다.
  • 비교 대상이 없을 때까지 위의 동작을 반복합니다.

만약 특정 루프 전체 영역에서 swap이 한 번도 일어나지 않앗다면 모두 정렬된 데이터이므로 동작을 종료하면 됩니다.

시간 복잡도

버블 정렬의 시간 복잡도는 O(n^2)으로 다른 정렬 알고리즘보다 속도가 느린 편입니다.

코드(Java)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Main {
    public static void main(String[] args) {
        int[] arr = {11, 9, 23, 5, 12};
        boolean swap = true;
        int end = arr.length-1;

        while(swap || end==0) {
            swap = false;
            for(int i=0; i<end; i++) {
                if(arr[i] > arr[i+1]) {
                    int temp = arr[i+1];
                    arr[i+1] = arr[i];
                    arr[i] = temp;
                    swap = true;
                } 
            }
            end--;
        }

        for(int number: arr) { // 출력 결과 : 5 9 11 12 23
            System.out.print(number + " ");
        }
    }
}

참고
Doit! 알고리즘 코딩 테스트 자바편

This post is licensed under CC BY 4.0 by the author.

Comments