반응형
우선순위 큐는 원소를 push하는 방법은 기존의 큐와 똑같지만 삭제 연산을 할 때
우선순위가 높은 원소 순서대로 제거 하는 큐이다.
그림처럼 원소를 1 -> 3 -> 4 -> 5 순서로 push한다.
큐 안에 push 된 원소들은 1, 3, 4, 5 순서대로 있지만 우선순위 큐에서는 우선순위를 부여하여
우선순위가 가장 높은 순서대로 원소를 제거 한다.
그림상에서는 숫자가 큰 순서대로 우선순위가 크다고 가정했다.
우선순위 큐는 배열로 구현 할 수 있는데, 삽입 연산은 그대로 큐의 끝에 원소를 삽입하여 O(1)의 시간이 걸린다.
하지만 삭제 연산을 할 때, 배열의 처음부터 큐의 길이 까지 우선순위를 탐색하여 가장 큰 원소를 삭제하고
그 다음에 삭제한 원소의 빈자리를 오른쪽에서 부터 한칸씩 당겨야 하기 때문에 O(n)의 시간이 걸린다.
삭제를 할 때에 입력이 커지게 되면 시간이 오래 걸려서 비효율적이다.
삭제연산을 줄이기 위해서 힙을 이용하여 우선순위 큐를 구현할 수 있는데,
그러면 O(log n) 의 시간만에 삭제 연산을 할 수 있다. O(n)과 O(log n)의 차이는 엄청나기 때문에
힙을 이용한 우선순위 큐의 구현은 배열을 이용한 구현보다 비교도 안 될 만큼 빠르다고 할 수 있다.
이 부분에 대해서는 힙에서 자세히 정리 할 것이다.
출처 : AlgorithmLABS
반응형
'자료구조' 카테고리의 다른 글
힙을 이용한 우선순위 큐 구현 (0) | 2019.02.25 |
---|---|
힙 (Heap) (0) | 2019.02.24 |
트리순회 결과 출력하기 (0) | 2019.02.23 |
트리 (Tree) (0) | 2019.02.23 |
원형 큐 구현하기 (0) | 2019.02.20 |