Oh My Algorithm
Algorithm Guidecomplexity: O(n²)

버블 정렬 (Bubble Sort)

인접한 두 원소를 비교하여 정렬하는 방식입니다. 큰 값이 한 칸씩 배열의 끝으로 밀려 나가는 모습에서 거품(bubble)이라는 이름이 붙었습니다. 구현이 단순하지만 큰 데이터에는 부적합합니다.

01버블 정렬 (Bubble Sort)

버블 정렬을 시작합니다. 이웃한 두 값을 견줘 큰 쪽을 뒤로 보내는 일을 끝까지 반복합니다.

첫 번째 요소 45와 두 번째 요소 12를 비교합니다.

45 > 12이므로 위치를 교환합니다. 큰 값이 뒤로 이동합니다.

45와 89를 비교합니다. 89가 더 크므로 유지합니다.

89와 34를 비교하고 교환합니다.

89와 67을 비교하고 교환합니다.

89와 23을 비교하고 교환합니다.

89와 56을 비교하고 교환합니다.

마지막으로 89와 10을 비교하고 교환합니다.

첫 번째 회전 완료! 가장 큰 값 89가 마지막 자리에 안착했습니다.

나머지 패스(2~7회)를 완료합니다. 매 회전마다 가장 큰 값이 뒤로 이동합니다.

버블 정렬 완료! [10, 12, 23, 34, 45, 56, 67, 89] — 모든 요소가 오름차순으로 정렬되었습니다.

45
12
89
34
67
23
56
10
1 / 12

02 쉽게 이해하기

For Everyone
🔑핵심 동작

이웃한 두 값을 비교해 순서가 어긋나면 바꿉니다. 한 번 훑을 때마다 가장 큰 값이 끝에 확정됩니다.

💡쉽게 말하면

옆 칸과 비교해 순서가 틀리면 자리를 바꾸는 것을 반복합니다.

구현이 단순하지만 느려서(O(n²)) 큰 데이터엔 부적합해요.

📍어디에 쓰나
  • 정렬 개념 학습
  • 거의 정렬된 소량 데이터

03 파이썬 구현 코드

버블 정렬 (Bubble Sort)의 핵심 로직을 담은 표준 구현 예시입니다. 가급적 간결하고 읽기 쉬운 코드로 작성되었습니다.

core_implementation.py
def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr

04 자주 묻는 질문

FAQ
버블 정렬 (Bubble Sort)란 무엇인가요?+

인접한 두 원소를 비교하여 정렬하는 방식입니다. 큰 값이 한 칸씩 배열의 끝으로 밀려 나가는 모습에서 거품(bubble)이라는 이름이 붙었습니다. 구현이 단순하지만 큰 데이터에는 부적합합니다.

버블 정렬 (Bubble Sort)의 시간복잡도는 어떻게 되나요?+

버블 정렬 (Bubble Sort)의 시간복잡도는 O(n²) 입니다. 시각화의 단계별 진행을 따라가며 왜 이런 복잡도가 나오는지 직접 확인할 수 있습니다.

버블 정렬 (Bubble Sort)은(는) 어디에 사용하나요?+

정렬 개념 학습, 거의 정렬된 소량 데이터.

버블 정렬 (Bubble Sort)를 쉽게 비유하면?+

이웃한 두 값을 비교해 순서가 어긋나면 바꿉니다. 한 번 훑을 때마다 가장 큰 값이 끝에 확정됩니다.