수학·컴퓨터

정렬 알고리즘의 속도 차이, 퀵 정렬과 병합 정렬의 분할 정복

뒤섞인 수십억 개의 데이터를 크기순으로 나열할 때 왜 단순 비교 방식은 한계에 부딪히며, 문제를 반으로 쪼개어 해결하는 분할 정복 기법이 컴퓨터 성능을 결정하는지 탐구한다.

편집부 · 2026년 10월 27일 · 읽는 데 4분

무질서한 데이터 블록들이 단계별로 정렬되는 과정을 표현한 컴퓨터 과학 일러스트
무질서한 데이터 블록들이 단계별로 정렬되는 과정을 표현한 컴퓨터 과학 일러스트

현대 컴퓨터가 수행하는 가장 기본적이면서도 중요한 연산 중 하나는 데이터를 크기순으로 가지런히 정리하는 정렬 작업이다. 포털 사이트의 검색 결과 정렬부터 데이터베이스 인덱싱, 그리고 대규모 인공지능 학습 데이터 전처리에 이르기까지 정렬이 들어가지 않는 시스템은 존재하지 않는다. 겉보기에는 단순해 보이는 이 작업 속에는 한정된 메모리와 연산 자원을 극한으로 쥐어짜 내기 위해 수학자들과 컴퓨터 과학자들이 고안한 우아한 알고리즘의 진화 과정이 응축되어 있다.

단순 비교의 덫과 이차 복잡도의 한계

가장 직관적인 정렬 방식은 첫 번째 값부터 끝까지 훑어가며 가장 작은 값을 찾아 맨 앞으로 보내는 선택 정렬이나, 인접한 두 값을 하나씩 비교하며 자리를 바꾸는 버블 정렬이다. 직관적이고 구현이 쉬워 초보자에게 친숙하지만, 데이터의 개수가 늘어날 때 필요한 연산 횟수가 개수의 제곱에 비례하여 폭증하는 치명적인 약점을 안고 있다.

데이터가 백 개일 때는 만 번의 비교로 충분하지만, 데이터가 백만 개로 늘어나면 필요한 비교 횟수는 일조 번으로 치솟는다. 현대의 초고속 프로세서로도 체감할 수 있는 심각한 지연이 발생하는 수준이다. 컴퓨터 공학자들은 전체 배열을 한 번에 다루는 대신, 문제를 작은 단위로 쪼갠 뒤 각각을 해결하고 다시 합치는 분할 정복이라는 강력한 수학적 방법론으로 이 거대한 벽을 돌파해냈다.

배열이 단계별로 분할되어 정렬된 후 병합되는 트리 구조 다이어그램

퀵 정렬의 피벗 선택과 현장 실행 속도의 비결

토니 호어가 개발한 퀵 정렬은 현실 세계의 수많은 상용 라이브러리에서 가장 사랑받는 알고리즘 중 하나다. 배열 속에서 기준점이 되는 피벗 원소를 하나 고른 뒤, 피벗보다 작은 값들은 왼쪽으로 몰아넣고 큰 값들은 오른쪽으로 몰아넣는 파티셔닝 과정을 재귀적으로 반복한다. 왼쪽과 오른쪽 하위 배열이 각자 정렬되는 순간 전체 배열은 이미 완벽한 순서를 갖추게 된다.

퀵 정렬의 놀라운 강점은 추가적인 임시 메모리 공간을 거의 쓰지 않고 제자리에서 원소들의 위치를 뒤바꾼다는 점이다. 현대 중앙처리장치의 캐시 메모리 친화적인 메모리 접근 패턴 덕분에 하드웨어의 성능을 극한으로 끌어올린다. 물론 이미 정렬된 배열에서 가장자리를 피벗으로 고르는 최악의 경우 이차 복잡도로 퇴보할 위험이 있지만, 무작위 피벗 선택이나 삼중 중앙값 추출 기법을 적용하여 이 확률을 수학적으로 극소화한다. 더 깊이 있는 컴퓨터 구조 및 정보 처리 관련 자료는 대용량 텀블러 에서도 확인할 수 있다.

알고리즘 평균 시간 복잡도 최악 시간 복잡도 추가 메모리 공간 특징 및 장단점
버블 정렬 제곱 비례 연산 제곱 비례 연산 메모리 낭비 없음 구현이 극히 단순하나 대용량 데이터에서 극단적 성능 저하
퀵 정렬 로그 곱 비례 연산 제곱 비례 연산 제자리 정렬 최소 메모리 캐시 적중률이 높아 현존 알고리즘 중 실제 실행 속도 최상위
병합 정렬 로그 곱 비례 연산 로그 곱 비례 연산 원본 크기만큼 추가 메모리 입력 상태와 무관한 일관된 성능과 안정 정렬 보장
힙 정렬 로그 곱 비례 연산 로그 곱 비례 연산 제자리 정렬 최소 메모리 최악의 경우에도 일정한 속도를 유지하나 캐시 효율 상대적 저하

퀵 정렬 피벗 분할 과정에서 데이터 요소들의 교환 단계를 보여주는 개념도

병합 정렬의 안정성과 대용량 외부 정렬의 표준

존 폰 노이만이 고안한 병합 정렬은 퀵 정렬과는 또 다른 철학으로 분할 정복을 구현한다. 원소가 하나만 남을 때까지 배열을 정확히 절반으로 끝없이 쪼갠 뒤, 나뉜 조각들을 두 개씩 비교하며 크기순으로 차곡차곡 합쳐 나가는 방식이다. 어떤 기형적인 데이터가 들어오더라도 한 번 쪼갤 때마다 데이터의 길이가 반으로 줄어들기 때문에 시간 복잡도가 흔들림 없이 로그 곱 비례를 유지한다.

병합 정렬의 또 다른 미덕은 동일한 크기를 가진 원소들의 원래 순서가 뒤바뀌지 않는 안정 정렬이라는 점이다. 또한 배열의 전체 데이터가 메인 메모리에 한꺼번에 올라가지 못할 만큼 거대한 테라바이트 단위의 빅데이터를 다룰 때, 디스크 블록 단위로 나누어 정렬한 뒤 순차적으로 스트리밍 병합하는 외부 정렬의 표준 기법으로 굳건히 자리매김하고 있다. 수학적 아름다움과 공학적 실용성이 정렬이라는 단 하나의 목표를 두고 펼치는 치열한 균형인 셈이며, 최적화된 알고리즘의 선택은 현대 소프트웨어 시스템의 응답성과 효율성을 지탱하는 근본적인 기둥이다.

이어서 읽기