IT/DataStructure

[DataStructure] Queue vs Priority Queue

어린이개발자 2023. 5. 20. 16:08

Queue 와 Priority Queue 의 특징에 대해 정리하고자 한다. 

그리고 이와 관련된 Heap 구현에 대한 개념까지 같이 서술한다.

 

1. Queue

- 시 순서상 먼저 집어 넣은 데이터가 먼저 나오는 선입선출 FIFO (First In First Out) 구조로 저장하는 형식
- 시
복잡도는 enqueue O(1), dequeue 역시 O(1)

 

2. Priority Queue

- 들어간 순서에 상관 없이 우선 순위가 높은 데이터가 먼저 나옴

- 시 복잡도는 push O(logn), pop O(logn)

- Heap 자료구조를 바탕으로 구현 방식 

  - Heap 완전 이진 트리 구조이며, 조건은 다음의 경우가 있다.

    - 1) Node 저장된 값은 Child Node 들에 저장된 값보다 크거나 같다 (Max Heap),

           따라서 Root Node 저장된 값이 가장 값이 된다

    - 2) Node 저장된 값은 Child Node 들에 저장된 값보다 작거나 같다 (Min Heap),

           따라서 Root Node 저장된 값이 가장 작은 값이 된다

  - Heap 구현

    - 보 Tree LinkedList 구현하지만, Heap 경우에는 똑같이 Tree 임에도 불구하고 Array 구현

      - 그 이유는 새로운 Node Heap 마지막 위치 추가해야 하는데, Array 기반으로 구현해야 과정이 수월해짐

        - 구현의 편의를 위해 Array 0번째 Index 사용하지 않는다고 하고,

        - 완전 이진 트리의 특성을 활용해 Array Index 만으로 부모 자식간의 관계를 정의한다.

          - N번째 Node Left Child Node = 2n

          - N번째 Node Right Child Node = 2n+1

          - N번째 Node Parent Node = n/2

 

3. 출처

- https://www.inflearn.com/course/%EA%B0%9C%EB%B0%9C%EC%9E%90-%EC%A0%84%EA%B3%B5%EB%A9%B4%EC%A0%91-cs-%EC%99%84%EC%A0%84%EC%A0%95%EB%B3%B5 

'IT > DataStructure' 카테고리의 다른 글

[DataStructure] Array vs LinkedList  (0) 2023.05.20