← 질문 목록
#15깊이 0

정렬의 안정성이 실무에서 문제가 되는 때는?

자료구조 · 알고리즘심화

정렬을 두 번 겹쳐 다중 기준을 만들 때다. 안정성이 없으면 앞서 맞춰둔 순서가 뒤 정렬에서 흐트러진다.

안정 정렬은 키가 같은 원소들의 원래 순서를 그대로 둔다. 이름순으로 정렬한 목록을 부서순으로 다시 정렬하면, 안정 정렬에서는 부서 안이 이름순으로 남는다. 불안정 정렬에서는 그 안이 뒤섞인다.

  1. 원본
  2. 그다음은 1차 정렬입니다. 이름순으로 세운다

    1차 정렬
  3. 그다음은 2차 정렬입니다. 부서순으로 다시 세운다

    2차 정렬
  4. 그다음은 결과입니다. 안정이면 부서 안이 이름순으로 남고, 불안정이면 뒤섞인다

    결과

언어마다 기본값이 다르다. 자바는 객체 배열에 TimSort를 써서 안정적이지만 원시 타입에는 퀵정렬 계열을 써서 그렇지 않다. 값이 같은 int 둘은 구별할 방법이 없으니 순서가 바뀌어도 관측되지 않기 때문이다.

그래서 판단 기준은 간단하다. 같은 키를 가진 두 원소를 사용자가 구별할 수 있으면 안정성이 필요하다. 화면에 이름이 보이는 목록이 그렇고, 숫자 배열은 아니다.

비교자를 합치면 안정 정렬에 기대지 않아도 된다. 합치면 안정성에 기대지 않아 안전하지만, 기준이 런타임에 정해지는 화면에서는 겹쳐 정렬하는 편이 단순하다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

정렬의 안정성이 실무에서 문제가 되는 때는?