Developer Toolbox

힙 정렬

리스트를 힙으로 바꿉니다. 힙은 모든 부모가 자식보다 큰 트리입니다. 그다음 최댓값을 끝으로 옮기는 일을 반복합니다.

  • Ω(n log n)
  • Θ(n log n)
  • O(n log n)
  • O(1)
  • 아니요
  • 예
  • 비교 중
  • 이동 중
  • 제자리
0 / 299 단계
비교 횟수 교환 횟수

재생을 누르면 정렬이 진행되며 비용이 늘어나는 모습이 선으로 보입니다

재생을 누르거나 한 단계씩 진행하세요.

스페이스바: 재생 또는 일시정지. 좌우 화살표 키: 단계 이동. Home과 End 키: 처음과 끝으로 이동.

해 보세요: 역순 리스트를 골라 보세요. 힙을 만들 때는 교환이 거의 없고, 그다음 매번 최댓값이 끝으로 갑니다.

작동 방식

힙은 리스트 안에 그대로 저장됩니다. i번 자리 값의 자식은 2i+1번과 2i+2번 자리에 있고, 최댓값은 언제나 맨 앞에 있습니다. 최댓값을 끝으로 교환하고, 힙을 하나 줄인 뒤 고칩니다. 정렬된 부분은 오른쪽부터 늘어납니다.

언제 쓰면 좋을까

최악의 경우에도 속도가 떨어지지 않아야 하고 추가 메모리를 쓸 수 없을 때 좋습니다. 작은 기기가 그런 예입니다. 평균적으로는 퀵 정렬보다 느려서 안전장치로 자주 쓰입니다.