2025-07-30 22:10
Status:
Tags: 알고리즘
버블 정렬
가장 단순한 형태의 정렬 알고리즘 학습 용으로 배우긴 하지만 실제 사용은 안한다.
기본 아이디어
- 배열 처음부터 두개씩 비교
- 왼쪽이 더 크면 교환 아니면 넘어감
- 끝까지 가면 왼쪽이 제일 작고 오른쪽이 제일 큼
시간 복잡도
- 최악 평균 : O(n²)
- 최선 : O(n) 이미 정렬된 경우라 의미 없음
파이썬 코드
def bubble_sort(arr):
n = len(arr)
while True:
swapped = False
for i in range(1,n): # 처음부터 끝까지
if arr[i-1] > arr[i] # 왼쪽이 오른쪽보다 크면
arr[i-1], arr[i] = arr[i], arr[i-1] # 스왑
swapped = True
if not swapped:
break
n -= 1
return arr
보통은 삽입 정렬 이나 퀵 정렬 합병 정렬 쓰지 이거 안쓴다.