Post

버블 정렬에 대하여 알아보기

버블 정렬에 대하여 알아보기

오늘은 버블 정렬에 대하여 알아보도록 하겠습니다.

개요

인접한 두개의 원소를 비교하여 자리를 교환하는 방식을 버블 정렬이라고 하며, 첫번째 원소부터 마지막 원소까지 반복하면서 가장 큰 원소가 마지막 자리로 정렬되게 됩니다.

첫번째 원소부터 인접한 원소끼리 계속 자리를 교환하면서 맨 마지막 자리로 이동하게되면서 물 속에서 물 위로 올라오는 물방울 모양같다고 하여 버블 정렬이라고 불린다고 합니다.

알고리즘

1
2
3
4
5
6
7
8
9
bubbleSort(arr[],n){
    for(i<-n-1;i>=0;i<-i-1){
        for(j<-0;j<i;j<-j+1){
            if(arr[j]>a[j+1])then{
                swap(arr[j],arr[j+1]);
            }
        }
    }
}

이 버블 정렬에서 사용하는 메모리의 크기는 정렬할 원소의 갯수인 n개가 됩니다.

가장 빨리 연산될 경우는 이미 정렬되있는 상태이며, 이럴 경우에는 i번째 원소는 n-i번 비교하게 되므로 평균 비교 획수는 n(n-1)/2가 됩니다.

당연하겠지만, 이미 정렬되있는 상황에는 자리의 교환이 일어나지 않습니다.

버블 정렬에 연산 시간이 최대가 되는 경우에는 원소들이 역순으로 정렬되있는 경우에는 원소들이 완전히 역순으로 정렬되있는 경우일 것입니다.

이 경우에도 i번째 원소는 n-i번 교환이 일어나므로 평균 비교횟수는 똑같습니다.

하지만 자리교환은 n(n-1)/2번 일어가게 됩니다.

그래서 버블 정렬에서의 시간 복잡도는 O(n^2)입니다.

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