본문 바로가기

알고리즘/알고리즘 도감

힙 정렬

지난 글: [알고리즘] - 삽입 정렬

 

힙 정렬(heap sort)은 힙이라는 데이터 구조를 사용하는 것이 특징이다. 힙에 대한 설명은 이전에 작성한 [알고리즘]  - 힙에 있다. 

 

1

          7
         / \
       6     5
      / \   / \
     2   3 1   4

힙에 1부터 7까지의 숫자를 저장한다. 힙은 내림차순으로 구축한다. 정렬하기 위해 힙에 저장된 숫자를 하나씩 꺼낸다.

◈내림차순 힙은 큰 것부터 순서대로 데이터를 추출하는 성질이 있으므로 꺼낸 숫자를 역순으로 나열하면 정렬이 완성된다.

 

2

        (뿌리)                         7// 꺼낸 숫자는 배열의 가장 오른쪽에 둔다.
         / \
       6     5
      / \   / \
     2   3 1   4

먼저 뿌리에 잇는 숫자(7)을 꺼낸다.

 

3

힙을 재구축한다. 

          6                           7
         / \
       4     5
      / \   / 
     2   3 1

같은 방식으로 뿌리에 있는 숫자(6)를 꺼내서 오른쪽에서 두 번째 칸에 둔다.

                                 6    7
         / \
       4     5
      / \   / 
     2   3 1

 

4

힙을 재구축한다.

          5                        6    7
         / \
       4     1
      / \   
     2   3

이후 힙이 모두 빌 때까지 같은 작업을 반복한다.

 

5

1	2	3	4	5	6	7

모든 숫자를 힙에서 꺼내면 정렬이 완료된다.

 

참고 서적 :

'알고리즘 > 알고리즘 도감' 카테고리의 다른 글

퀵 정렬  (2) 2022.06.12
병합 정렬  (0) 2022.06.11
삽입 정렬  (0) 2022.06.09
선택 정렬  (0) 2022.06.08
버블 정렬  (0) 2022.06.07