Algorithm and Data Structure
Heap Sort
코딩준우
2023. 12. 17. 18:38
#include <bits/stdc++.h>
template<typename T>
void HeapSort(std::vector<T> & arr) {
// maxHeap;
std::priority_queue<T> pq;
for (int i = 0; i < arr.size(); ++i){
pq.push(arr[i]);
}
for (int i = arr.size() - 1; i >= 0; --i){
int largest = pq.top(); pq.pop();
arr[i] = largest;
}
}
template<typename T>
void printArr(std::vector<T> arr){
for (auto ele : arr) {
std::cout << ele << " ";
}
std::cout << "\n";
}
int main(int argc, char** argv) {
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
std::vector<int> arr = {3, 5, 7, 9, 4, 2};
std::cout << "before : ";
printArr(arr);
HeapSort(arr);
std::cout << "after : ";
printArr(arr);
return 0;
}
정리
시간복잡도 O(N) + O(NlogN) = O(NlogN)
공간복잡도 O(1) ---> heapify를 사용하는 경우