본문 바로가기

Language/Algorithm

3. 버블 정렬

버블 정렬은 인접한 두 원소를 검사해 정렬하는 알고리즘이다.

 

선택 정렬은 앞자리를 제하고, 남은 것 중 최소값을 찾는 방식으로 추출 했었으나,

버블 정렬에서는 모든 값을 다회 비교하기 위해 한 자리에서 두 번 이상의 교체가 이루어지는 경우가 있다.

 

1. 주어진 리스트의 첫번째 값과 인접한 값을 비교한다.

2. 두 값의 크기 순서가 일치하지 않을 경우, 교환한다.

3. 각 자리별로 순서대로 반복하며, 모든 자리의 값 크기 순서가 맞을 때 까지 순회한다.

 

리스트가 [ 5,4,2,1,0,3 ] 일 경우, 큰 수부터 정렬하는 예시

 

1순회

pass table 자리교환
0 5,4,2,1,0,3  
1 5,4,2,1,0,3 X
2 5,4,2,1,0,3 X
3 5,4,2,1,0,3 X
4 5,4,2,1,0,3 X
5 5,4,2,1,0,3 O
6 5,4,2,1,3,0 순회종료

 

2순회

pass table 자리교환
0 5,4,2,1,3,0  
1 5,4,2,1,3,0 X
2 5,4,2,1,3,0 X
3 5,4,2,1,3,0 X
4 5,4,2,1,3,0 O
5 5,4,2,3,1,0 X
6 5,4,2,3,1,0 순회종료

 

3순회

pass table 자리교환
0 5,4,2,3,1,0 X
1 5,4,2,3,1,0 X
2 5,4,2,3,1,0 X
3 5,4,2,3,1,0 O
4 5,4,3,2,1,0 순회종료
    정렬완료

 

 

버블 정렬은 리스트의 크기만큼 계속해서 순회하기 때문에

시간복잡도가 O(n^2) , Ω(n^2)이 된다.

 

 

def bubbleSort(arr):
    
    length = len(arr) - 1
    
    for i in range(length):
        for j in range(length-i):
            if(arr[j] > arr[j+1]):
                arr[j], arr[j+1] = arr[j+1], arr[j]
                
    return arr

파이썬에서의 구현

출처: https://star-crab.tistory.com/22

 

[Python] 대표적인 정렬 알고리즘

<목차> 1. 버블정렬 (Bubble Sort) 2. 삽입정렬 (Insert Sort) 3. 선택정렬 (Selection Sort) 4. 병합정렬 (Merge Sort) 5. 퀵정렬 (Quick Sort) 6. 힙정렬 (Heap Sort) 자료구조와 알고리즘 공부를 다시 시작해보..

star-crab.tistory.com

 

'Language > Algorithm' 카테고리의 다른 글

5. 힙 트리 ( Heap Tree )  (0) 2021.12.17
4. 합병 정렬  (0) 2021.12.16
2. 선택 정렬  (0) 2021.12.13
1.이진탐색트리 (BST)  (0) 2021.12.12