1. 용어
    1. 우선순위 큐(Priority Queue)
      1. 들어간 순서에 상관없이 우선순위가 높은 데이터가 먼저 나온다.
      2. 우선순위 큐의 구현 방법
        1. 배열을 기반으로 구현
        2. 연결 리스트를 기반으로 구현
        3. 힙(Heap)을 이용하여 구현
    2. 힙(Heap)
      1. 이진트리(Binary Tree) 중 완전이진트리(Complete Binary Tree)
      2. 최소힙(Min Heap) : 각 노드는 자식의 값보다 작아야 한다.
      3. 최대힙(Max Heap) : 각 노드는 자식의 값보다 커야 한다.
  2. 힙의 연산

    출처: https://blog.naver.com/taeil34/221349440884

    1. 값 추가 : 맨 마지막 노드에 값을 추가하고 힙을 재구성
      1. 15, 32, 28, 48 순으로 4개를 추가하는 과정 설명
    2. 값 삭제 : 루트 노드 값 삭제하고 맨 마지막 노드의 값을 루트 노드로 이동후 힙을 재구성
      1. 값을 3개 삭제하는 과정 설명
  3. 우선순위 큐의 시간복잡도
    1. 배열 기반 구현
      1. 저장 : O(n)
      2. 삭제 : O(1)
    2. 연결 리스트 기반 구현
      1. 저장 : O(n)
      2. 삭제 : O(1)
    3. 힙 기반 구현
      1. 저장 : O(log n)
      2. 삭제 : O(log n)
  4. 힙의 구현
    1. 힙은 트리와 같기 때문에 배열과 연결리스트 모두 구현 가능
    2. 배열로 구현해야 함
    3. 연결리스트는 마지막 노드를 구하기가 어렵기 때문에 구현 힘듬
  5. 배열을 이용한 단순 힙(Heap) : S009_SimpleHeap.c

     
error: Content is protected !!