Skip to content

정렬 알고리즘 한눈에 비교 ​

정렬 알고리즘 8가지를 표 하나로 비교합니다. 각 알고리즘의 자세한 동작과 Python 코드는 이름을 눌러 보세요.

비교 정렬 6가지 ​

값끼리 "누가 더 크냐"를 비교하면서 정렬하는 방법입니다.

정렬 알고리즘평균 시간복잡도최악 시간복잡도안정 정렬특징
삽입 정렬 (Insertion)O(N²)O(N²)O (안정)대부분 정렬되어 있을 때 매우 빠름
버블 정렬 (Bubble)O(N²)O(N²)O (안정)구현이 가장 간단하지만 성능이 떨어짐
선택 정렬 (Selection)O(N²)O(N²)X (불안정)교환 횟수가 적지만 항상 일정한 시간 소요
병합 정렬 (Merge)O(N log N)O(N log N)O (안정)항상 일정한 성능을 보장하나 추가 메모리 필요
퀵 정렬 (Quick)O(N log N)O(N²)X (불안정)피벗 선택에 따라 최악의 경우가 발생할 수 있음
힙 정렬 (Heap)O(N log N)O(N log N)X (불안정)추가 메모리가 필요 없는 효율적인 정렬

비교하지 않는 정렬 2가지 ​

값을 서로 비교하지 않고, 자릿수나 개수를 세서 제자리를 찾아 주는 방법입니다. 조건이 맞으면 O(N log N)보다 빠릅니다.

정렬 알고리즘시간복잡도안정 정렬특징
기수 정렬 (Radix)O(d × (N + k))O (안정)자릿수(d)별로 나눠 담기를 반복. 정수·길이가 같은 문자열에 적합
계수 정렬 (Counting)O(N + k)O (안정)값마다 몇 번 나왔는지 세기. 값의 범위(k)가 작을 때만 유리

용어 정리 ​

  • 평균 시간복잡도: 입력 가능한 모든 데이터가 골고루 들어온다고 가정했을 때 걸리는 평균 연산 횟수 (= 일반 성능)
  • 최악 시간복잡도: 가장 불리한 데이터 패턴이 들어왔을 때 걸리는 최대 연산 횟수 (= 보장되는 최악 성능)
  • 안정 정렬: 정렬 기준이 같은 중복 데이터가 여러 개일 때, 정렬 전의 상대 순서가 정렬 후에도 유지됨
    • 예) 상품을 1차로 추천순 정렬한 뒤 다시 2차로 가격순 정렬하면, 가격이 같은 상품끼리는 추천순 순서가 그대로 유지됨
  • 제자리 정렬 (in-place): 입력 배열 말고 추가 메모리를 거의 쓰지 않는 정렬 (거품·선택·삽입·힙·퀵)

O(N²), O(N log N)이 얼마나 차이 나는지는 시간 복잡도 글에 정리해 두었습니다.

정렬 알고리즘 비교와 용어 손글씨 노트

직접 손으로 정리한 노트: 정렬 알고리즘 비교와 용어

정리 ​

개념비전공자 버전 요약
O(N²) 정렬거품·선택·삽입. 쉽지만 데이터가 많으면 느림
O(N log N) 정렬병합·퀵·힙. 실무에서 쓰는 빠른 정렬
비교 안 하는 정렬기수·계수. 값의 범위가 좁으면 가장 빠름
안정 정렬같은 값끼리 원래 순서가 유지되는 정렬

출처: Codyssey-B1/B5-2 학습 노트