더북(TheBook)

이를 데이터 개수 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]


리스트가 오름차순으로 정렬되었습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.