패스잇
CS 기초 · 기초

버블 정렬(Bubble Sort) 알고리즘의 동작 원리를 설명하고, 이 알고리즘의 시간 복잡도와 실제 시스템 개발에서 잘 사용되지 않는 이유를 함께 설명해주세요.

힌트 · 버블 정렬은 인접한 두 원소를 비교하여 정렬하는 방식입니다. 최악 및 평균 시간 복잡도가 O(N^2)로 비효율적입니다.

인접_원소_비교교환(Swap)O(n^2)비효율성최선_O(n)

모범답안

버블 정렬은 이름 그대로 물방울이 올라오듯, 인접한 두 원소를 계속 비교하면서 가장 큰(또는 작은) 원소를 맨 뒤로 보내는 방식입니다. 마치 거품이 올라오듯 말이죠. 한 번의 패스가 끝나면 가장 큰 원소가 제자리를 찾고, 다음 패스에서는 남은 원소들 중 가장 큰 원소가 제자리를 찾습니다. 이 과정을 배열의 모든 원소가 정렬될 때까지 반복합니다.

시간 복잡도는 최악의 경우와 평균적인 경우 모두 O(N^2)입니다. 이는 배열의 크기가 커질수록 정렬에 걸리는 시간이 제곱으로 늘어난다는 뜻이라, 실제 시스템에서는 매우 비효율적입니다. 예를 들어, 이미 정렬된 배열의 경우를 제외하고는 항상 N번의 비교와 N-1번의 교환이 발생합니다.

실제 시스템 개발에서 잘 사용되지 않는 주된 이유는 바로 이 O(N^2)의 비효율성 때문입니다. 데이터 양이 조금만 많아져도 성능 저하가 심각해지기 때문에, 퀵 정렬, 병합 정렬, 힙 정렬과 같이 평균적으로 O(N log N)의 시간 복잡도를 갖는 더 효율적인 알고리즘들이 선호됩니다. 물론, 버블 정렬도 약간의 최적화(한 번도 교환이 일어나지 않으면 정렬이 끝났다고 판단)를 통해 최선(이미 정렬된 경우)의 경우 O(N)의 시간 복잡도를 가질 수는 있지만, 이는 일반적인 상황과는 거리가 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 알고리즘 면접 질문

← 알고리즘 면접 질문 전체 보기