代码实现:
代码语言:javascript复制#include <iostream>
#include <queue>
using namespace std;
template<typename T>
void heapSort(T arr[],int n){
//构建大根堆
//如果T类型不是基本类型,是class/struct,则需要重载小于号运算符
priority_queue<T,vector<T>> q;//缺省的情况下使用小于号,越小的优先级越高
for(int i=0;i<n; i){
q.push(arr[i]);
}
for(int i=n-1;i>=0;--i){
arr[i] = q.top();
q.pop();
}
}
template<typename T>
void show(T arr[],int n){
for(int i=0;i<n; i){
cout<<arr[i]<<" ";
}
cout<<endl;
}
int main(){
int arr[] = {5,3,1,4,2};
int n = sizeof(arr)/sizeof(int);
heapSort(arr,n);
show(arr,n);
return 0;
}
执行结果: