버블 정렬 (Bubble Sort)
정렬 순서
주어진 리스트에서 서로 이웃한 데이터를 비교하여 큰 데이터를 뒤로 보낸다
리스트를 한 바퀴 돌면 가장 큰 값이 가장 뒤로 이동하게 되므로 두 번째 바퀴에는 마지막을 제외하고 1번을 반복한다
예시
순서 | 리스트 | 진행 상황 |
---|---|---|
0 | [ 3, 6, 5, 7, 2 ] | 초기값 |
1 | [ 3, 5, 6, 7, 2 ] | |
2 | [ 3, 5, 6, 2, 7 ] | 7 확정 |
3 | [ 3, 5, 2, 6, 7] | 6 확정 |
4 | [ 3, 2, 5, 6, 7] | 5 확정 |
5 | [ 2, 3, 5, 6, 7] | 3 확정 |
6 | [ 2, 3, 5, 7, 8] | 2 확정 |
7 | [2, 3, 5, 7, 8] | 끝 |
def bubble_sort(x):
length = len(x)
for i in range(length):
for j in range(length-i):
if x[j] > x[j+1]:
x[j], x[j+1] = x[j+1], x[j]
return x
시간 복잡도 비교
기본 정렬 알고리즘 | 최적 | 평균 | 최악 |
---|---|---|---|
선택 정렬 | N^2 | N^2 | N^2 |
버블 정렬 | N^2 | N^2 | N^2 |
삽입 정렬 | N | N^2 | N^2 |