[Algorithm] Bubble Sort
2 minute read
Bubble Sort
Example
[9, 8, 6, 4, 1, 3]
Index |
0 |
1 |
2 |
3 |
4 |
5 |
Value |
9 |
8 |
6 |
4 |
1 |
3 |
순회 1 회차
Index |
0 |
1 |
2 |
3 |
4 |
5 |
Value |
9 |
8 |
6 |
4 |
1 |
3 |
Index |
0 |
1 |
2 |
3 |
4 |
5 |
Value |
8 |
9 |
6 |
4 |
1 |
3 |
Index |
0 |
1 |
2 |
3 |
4 |
5 |
Value |
8 |
6 |
9 |
4 |
1 |
3 |
Index |
0 |
1 |
2 |
3 |
4 |
5 |
Value |
8 |
6 |
4 |
9 |
1 |
3 |
Index |
0 |
1 |
2 |
3 |
4 |
5 |
Value |
8 |
6 |
4 |
1 |
9 |
3 |
Result
Index |
0 |
1 |
2 |
3 |
4 |
5 |
Value |
8 |
6 |
4 |
1 |
3 |
9 |
순회 2 회차
최대값에 해당하는 9 가 가장 마지막으로 이동하여 자신의 위치를
찾았기 때문에 마지막 요소(9)는 고려할 필요없어진다.
Index |
0 |
1 |
2 |
3 |
4 |
5 |
Value |
8 |
6 |
4 |
1 |
3 |
9 |
Index |
0 |
1 |
2 |
3 |
4 |
5 |
Value |
6 |
8 |
4 |
1 |
3 |
9 |
Index |
0 |
1 |
2 |
3 |
4 |
5 |
Value |
6 |
4 |
8 |
1 |
3 |
9 |
Index |
0 |
1 |
2 |
3 |
4 |
5 |
Value |
6 |
4 |
1 |
8 |
3 |
9 |
Result
Index |
0 |
1 |
2 |
3 |
4 |
5 |
Value |
6 |
4 |
1 |
3 |
8 |
9 |
순회 3 회차
두번째로 큰 값 8 이 자신의 위치로 이동하였기 때문에
9 와 두번째 마지막 요소(8)는 고려할 필요없어진다.
Index |
0 |
1 |
2 |
3 |
4 |
5 |
Value |
6 |
4 |
1 |
3 |
8 |
9 |
Index |
0 |
1 |
2 |
3 |
4 |
5 |
Value |
4 |
6 |
1 |
3 |
8 |
9 |
Index |
0 |
1 |
2 |
3 |
4 |
5 |
Value |
4 |
1 |
6 |
3 |
8 |
9 |
Result
Index |
0 |
1 |
2 |
3 |
4 |
5 |
Value |
4 |
1 |
3 |
6 |
8 |
9 |
순회 4 회차
세번째로 큰 값 6 이 자신의 위치로 이동하였기 때문에
9, 8, 6 은 고려할 필요없어진다.
Index |
0 |
1 |
2 |
3 |
4 |
5 |
Value |
4 |
1 |
3 |
6 |
8 |
9 |
Index |
0 |
1 |
2 |
3 |
4 |
5 |
Value |
1 |
4 |
3 |
6 |
8 |
9 |
Result
Index |
0 |
1 |
2 |
3 |
4 |
5 |
Value |
1 |
3 |
4 |
6 |
8 |
9 |
순회 5 회차
정렬이 완료된 4, 6, 8, 9 를 제외한
1 과 3 을 비교한다.
Index |
0 |
1 |
2 |
3 |
4 |
5 |
Value |
1 |
3 |
4 |
6 |
8 |
9 |
Result
Index |
0 |
1 |
2 |
3 |
4 |
5 |
Value |
1 |
3 |
4 |
6 |
8 |
9 |
정렬이 완료되었다.
Python Implementation Code
swap
변수를 활용하여 변화가 없을 시 바로 종료하도록 설정
def bubble_sort(seq):
l = len(seq)
for i in range(l-1):
swap = False
for j in range(l-1-i):
if seq[j] > seq[j+1]:
seq[j], seq[j+1] = seq[j+1], seq[j]
swap = True
if not swap:
break
return seq
Leave a comment