버블 정렬은, 배열 내 이웃한 원소들을 비교함으로써 정렬하는 알고리즘이다.
어느 배열 a가 n개의 원소를 가진다면, a[n - 1]과 a[n - 2], ... , a[1]과 a[0]을 순차적으로 비교한다.
버블 정렬은 안정적인 알고리즘이며, 시간 복잡도는 O(N^2)이다. (교재 p224 참고)
# 버블 정렬 알고리즘 구현하기
from typing import MutableSequence
def bubble_sort(a: MutableSequence) -> None:
"""버블 정렬"""
n = len(a)
for i in range(n - 1): # i의 범위: 0 ~ n - 2
for j in range(n - 1, i, -1): # 11 ~ 13행: Pass 과정
if a[j - 1] > a[j]:
a[j - 1], a[j] = a[j], a[j - 1]
if __name__ == '__main__':
print('버블 정렬을 수행합니다.')
num = int(input('원소 수를 입력하세요: '))
x = [None] * num # 원소 수가 num인 배열을 생성
for i in range(num):
x[i] = int(input(f'x[{i}]: '))
bubble_sort(x) # 배열 x를 버블 정렬
print('오름차순으로 정렬했습니다.')
for i in range(num):
print(f'x[{i}] = {x[i]}')
'컴퓨터 과학 > 알고리즘' 카테고리의 다른 글
[알고리즘] 8퀸 문제 (재귀) (0) | 2022.11.30 |
---|---|
[알고리즘] 단순 삽입 정렬 (0) | 2022.10.01 |
[알고리즘] 단순 선택 정렬 (0) | 2022.09.27 |
[알고리즘] 브루트 포스법 (0) | 2022.08.15 |
[알고리즘] {재귀} 하노이 탑 (0) | 2022.07.10 |