빠른 정렬 분할 정복 전략을 기반으로 하는 내부 알고리즘입니다. 이것에서:
- 요소 배열은 더 이상 분할할 수 없을 때까지 여러 부분으로 반복적으로 분할됩니다.
- 그것은 또한로 알려져 있습니다 파티션 교환 정렬 .
- 요소를 분할하기 위해 핵심 요소(피벗)를 사용합니다.
- 왼쪽 파티션 하나에는 피벗보다 작은 요소가 모두 포함되고 오른쪽 파티션 하나에는 키 요소보다 큰 요소가 모두 포함됩니다.
병합 정렬 외부 알고리즘이며 분할 및 정복 전략을 기반으로 합니다. 이것에서:
- 요소는 하나의 요소만 남을 때까지 계속해서 두 개의 하위 배열(n/2)로 분할됩니다.
- 병합 정렬은 보조 배열을 정렬하기 위해 추가 스토리지를 사용합니다.
- 병합 정렬은 세 개의 배열을 사용합니다. 여기서 두 개는 각각의 절반을 저장하는 데 사용되고 세 번째 외부 배열은 다른 두 개를 병합하여 최종 정렬 목록을 저장하는 데 사용되며 각 배열은 재귀적으로 정렬됩니다.
- 마지막으로 모든 하위 배열이 병합되어 배열의 'n' 요소 크기가 됩니다.

빠른 정렬과 병합 정렬
- 배열의 요소 분할: 병합 정렬에서는 배열이 2개의 절반(예: n/2)으로 분할됩니다. 반면 빠른 정렬의 경우 배열은 임의의 비율로 분할됩니다. 퀵 정렬에서는 요소 배열을 동일한 부분으로 나누도록 강요되지 않습니다. 최악의 복잡도 : 퀵 정렬의 최악의 복잡도는 최악의 조건에서 많은 비교가 필요하기 때문에 O(n^2)입니다. 병합 정렬에서는 최악의 경우와 평균적인 경우의 복잡성이 O(n log n)입니다. 데이터 세트 사용: 병합 정렬은 크기(크거나 작음)에 관계없이 모든 유형의 데이터 세트에서 잘 작동할 수 있습니다. 반면 빠른 정렬은 대규모 데이터세트에서는 제대로 작동하지 않습니다. 추가 저장 공간 요구 사항 : 보조 배열을 저장하기 위해 추가 메모리 공간이 필요하므로 병합 정렬이 적용되지 않습니다. 추가 저장 공간이 필요하지 않으므로 빠른 정렬이 적용됩니다. 효율성 : 병합 정렬은 배열 크기나 데이터 세트가 더 큰 경우 빠른 정렬보다 더 효율적이고 빠르게 작동합니다. 빠른 정렬은 배열 크기나 데이터 세트가 더 작은 경우 병합 정렬보다 더 효율적이고 빠르게 작동합니다. 정렬 방식 : 퀵 정렬은 데이터를 메인 메모리에 정렬하는 내부 정렬 방식입니다. 병합 정렬은 정렬하려는 데이터를 메모리에 수용할 수 없고 정렬을 위해 보조 메모리가 필요한 외부 정렬 방법입니다. 안정성 : 병합 정렬은 정렬되지 않은 입력 배열에서와 마찬가지로 정렬된 출력에서도 동일한 값을 갖는 두 요소가 동일한 순서로 나타나므로 안정적입니다. 이 시나리오에서는 빠른 정렬이 불안정합니다. 그러나 코드를 약간 변경하면 안정적으로 만들 수 있습니다. 선호되는 항목: 배열에는 빠른 정렬이 선호됩니다. 연결된 목록에는 병합 정렬이 선호됩니다. 참조 지역성 : Quicksort는 좋은 캐시 지역성을 나타내므로 병합 정렬보다 빠른 정렬이 가능합니다(가상 메모리 환경과 같은 많은 경우).
| 비교의 기초 | 빠른 정렬 | 병합 정렬 |
|---|---|---|
| 배열 요소의 분할 | 요소 배열의 분할은 비율에 관계없이 이루어지며 반드시 절반으로 분할될 필요는 없습니다. | 병합 정렬에서는 배열이 2개의 절반(예: n/2)으로 분할됩니다. |
| 최악의 경우 복잡성 | 오(n^2) | O(로그인) |
| 잘 작동합니다 | 더 작은 배열에서 잘 작동합니다. | 모든 크기의 배열에서 잘 작동합니다. |
| 실행 속도 | 선택 정렬 등과 같은 작은 데이터 세트의 경우 다른 정렬 알고리즘보다 빠르게 작동합니다. | 모든 크기의 데이터에 대해 일관된 속도를 제공합니다. |
| 추가 저장 공간 요구 사항 | 적게(내부) | 더보기(현재 위치 아님) |
| 능률 | 대규모 어레이에는 비효율적 | 더 효율적 |
| 정렬 방법 | 내부 | 외부 |
| 안정 | 불안정함 | 안정적인 |
| 선호하는 대상 | 어레이용 | 연결 목록의 경우 |
| 참조 지역성 | 좋은 | 가난한 |
| 주요업무 | 주요 작업은 배열을 재귀적으로 정렬하기 전에 두 개의 하위 배열로 분할하는 것입니다. | 주요 작업은 두 개의 하위 배열을 재귀적으로 정렬한 후 결합하는 것입니다. |
| 배열의 분할 | 배열을 하위 배열로 나누는 것은 배열이 피벗을 중심으로 분할되므로 균형이 맞을 수도 있고 그렇지 않을 수도 있습니다. | 배열을 하위 배열로 나누는 것은 정확히 중앙에서 배열을 나누기 때문에 항상 균형이 유지됩니다. |
| 방법 | 퀵 정렬은 인플레이스(In-place) 정렬 방식이다. | 병합 정렬은 제자리 정렬 방법이 아닙니다. |
| 병합 | Quicksort에서는 정렬된 하위 배열을 명시적으로 병합할 필요가 없습니다. 오히려 분할 중에 하위 배열이 적절하게 재배열되었습니다. | 병합 정렬은 정렬된 하위 배열을 명시적으로 병합합니다. |
| 공간 | Quicksort에는 추가 배열 공간이 필요하지 않습니다. | 정렬된 하위 배열을 병합하려면 입력 요소 수와 동일한 크기의 임시 배열이 필요합니다. |