위키득계정 ↗
기술

안정 정렬

안정 정렬기술
영문명
Stable sort
보존 대상
동일 키 원소의 상대 순서
구별 대상
시간 복잡도와 메모리 사용량
주요 활용
여러 기준을 차례로 정렬
안정 정렬은 정렬 키가 같은 원소들의 입력 순서를 결과에서도 유지하는 정렬이다. 정렬 결과의 대소 관계가 맞는지와 같은 키의 상대 순서를 보존하는지는 별개의 성질이다.

같은 점수의 순서

입력이 가영 5점, 나래 3점, 다온 5점이라면 점수 오름차순의 안정 정렬 결과는 나래, 가영, 다온이다. 5점 두 사람의 원래 순서가 유지된다. 다온을 가영 앞에 두어도 점수순 자체는 맞지만 안정 조건은 깨진다.

여러 기준을 적용하기

이름순으로 정렬한 뒤 점수 기준으로 안정 정렬하면 같은 점수 안에서 이름순이 유지된다. 나중의 정렬 기준이 주된 기준이 되고 앞서 정한 순서는 같은 키 안에서 남는다.

알고리즘과 구현

버블 정렬은 같은 키끼리 교환하지 않는 표준 방식에서 안정성을 갖는다. 병합 정렬도 병합 때 같은 키에서 왼쪽 원소를 먼저 택하는 방식으로 안정성을 유지한다. 이름만이 아니라 구체적인 같은 키 처리 규칙을 확인한다.

원래 위치를 추가하기

키에 원래 위치를 보조 기준으로 붙여 동일 키에서 위치순으로 비교하는 방법도 있다. 이는 입력 순서를 명시적인 정렬 조건으로 만드는 것이다. 안정성은 빠르거나 메모리를 적게 쓴다는 의미가 아니다.

관련 문서

정렬 알고리즘 / 기수 정렬 / 계수 정렬 / 버블 정렬 / 병합 정렬 / 힙 정렬 / 시간 복잡도 / 배열