반응형
우선순위 큐와 벡터 정렬 시간복잡도 차이
가끔 알고리즘 문제를 풀다보면 정렬하는 과정이 필요한 문제가 있습니다.
우선순위 큐
문제를 푸는 과정 중에서 원소의 삽입과 삭제를 할 때마다 정렬이 필요한 경우에는
Priority Queue 자료구조를 이용하여 쉽게 구현할 수 있습니다.
벡터
정렬된 결과가 필요할 때 array나 vector을 sort함수를 이용해 쉽게 정렬해줄 수 있습니다.
우선순위 큐 VS 벡터 Sort
그런데 특정 결과를 얻기 위해서 모든 원소를 한번 정렬해준 결과가 필요할 때
과연 우선순위 큐를 이용해서 pop해주면서 순서대로 사용하는 것과
벡터를 이용해서 한번 nlogn 으로 sort 해주는 것 중
어떤게 더 시간복잡도 상에서 빠른지 궁금해졌습니다.
결론
내용을 간단히 정리하면
자료 형태나 문제에 따라 다르겠지만
우선순위 큐에 n개의 항목을 삽입 하는 것은
점근적 복잡도 O(nlogn)를 가지므로 복잡도 측면 에서 결국 한 번 사용하는 것보다 효율적이지 않습니다.
즉 정렬이 최종적으로 한번 만 필요한 경우에는
vector 나 array를 한 번 sort 해주는 게 효율적입니다.
반대로 원소의 삽입과 pop이 빈번한 경우는 우선순위큐를 이용해
효율적으로 알고리즘을 구성할 수 있습니다.
반응형
'Algorithm > etc' 카테고리의 다른 글
에라토스테네스 최적화, 소수 판별 (0) | 2022.06.29 |
---|---|
DP 경로구하기 (0) | 2022.06.27 |
Network FLow 최대 유량 알고리즘 (0) | 2022.02.22 |
cycle 찾기 (0) | 2022.02.21 |
Segment Tree 구현 코드 C++ (0) | 2022.02.11 |