버블정렬이란?
- 두개의 인접한 데이터를 비교해서 앞에 있는 데이터가 뒤에 있는 데이터보다 크면, 자리를 바꾼다
- 예 : data_list = [1, 9, 3, 2]
- 1차 로직
- 1, 9 비교 : 자리바꿈X [1,9,3,2]
- 9, 3 비교 : 자리바꿈O [1,3,9,2]
- 9, 2 비교 : 자리바꿈O [1,3,2,9]
- 2차 로직
- 1, 3 비교 : 자리바꿈X [1,3,2,9]
- 3, 2 비교 : 자리바꿈O [1,2,3,9]
- 3, 9 비교 : 자리바꿈X [1,2,3,9]
- 3차 로직
- 1, 2 비교 : 자리바꿈X [1,2,3,9]
- 2, 3 비교 : 자리바꿈X [1,2,3,9]
- 3, 9 비교 : 자리바꿈X [1,2,3,9]
- 1차 로직
알고리즘 구현
- n개의 리스트가 있는 경우, 최대 n-1번의 로직 적용
- 로직이 경우에 따라 일찍 끝날수도 있다 -> 한번도 데이터가 교환된 적이 없다면 스탑!
def bubblesort(data):
for index in range(len(data)-1):
swap = False
for index2 in range(len(data)-index-1):
if data[index2] > data[index2 + 1]:
data[index2], data[index2 + 1] = data[index2 + 1], data[index2]
swap = True
if swap == False:
break
return data
'알고리즘 > 개념' 카테고리의 다른 글
[알고리즘] 이진 탐색 (Binary Search) (0) | 2020.02.06 |
---|---|
[알고리즘] 퀵 정렬 (quick sort) (0) | 2020.02.06 |
[알고리즘] DP (동적계획법) (0) | 2020.02.05 |
[알고리즘] 선택정렬 (selection sort) (0) | 2020.01.29 |
[알고리즘] 삽입정렬 (insertion sort) (0) | 2020.01.29 |