이를 데이터 개수 n에 대해 일반화하면 거품 정렬 알고리즘이 됩니다. 데이터 개수가 n일 때 총 n-1회 반복하고 한 번 반복할 때마다 n-1회부터 1회까지 하나씩 줄어들며 비교 및 교환을 합니다. 중첩 for 문으로 구현할 수 있겠군요. 코드를 보겠습니다.
코드 15-3 algorithm/algo_2/bubble_sort.py ①
def bubble_sort(data): data_len = len(data) for i in range(data_len - 1): #1 for j in range(data_len – 1- i): #2 if data[j] > data[j+1]: data[j], data[j+1] = data[j+1], data[j]
#1과 #2의 range() 범위가 거품 정렬을 구현하는 핵심입니다.
잘 작동하는지 테스트해 봅시다.
코드 15-4 algorithm/algo_2/bubble_sort.py ②(테스트 코드)
if __name__ = = "__main__": li = [2, 3, 5, 2, 3, 8, 6, 7, 10, 8, 1, 4] bubble_sort(li) print(li)
실행결과 [1, 2, 2, 3, 3, 4, 5, 6, 7, 8, 8, 10]
리스트가 오름차순으로 정렬되었습니다.