C++堆排序代码实现
#include<iostream>//万能头文件编译时间太长//
#include<queue>//要用到优先队列(priority_queue)//
using namespace std;
priority_queue< int,vector<int>,less<int> > pqmax;//定义大堆顶的堆//
priority_queue< int,vector<int>,greater<int> > pqmin;//定义小堆顶的堆//
//注意定义时两个'>'之间一定要加空格,要不然就变成位运算了//
int main(){
int n;
cout<<"数列长度:";
cin>>n;
cout<<"原数列:";
while(n--){
int x;//由于优先队列不能直接输入,要用一个变量间接输入//
cin>>x;
//将x存入优先队列//
pqmax.push(x);
pqmin.push(x);
}
cout<<"升序数列:";
while(pqmin.size()){ //输出队列中所有的数//
cout<<pqmin.top()<<" ";//输出堆顶,堆顶永远是堆中最小的//
pqmin.pop();//把已经输出过的删出堆//
}
cout<<"\n升序数列:";
while(pqmax.size()){ //输出队列中所有的数//
cout<<pqmax.top()<<" ";//输出堆顶,堆顶永远是堆中最大的//
pqmax.pop();//把已经输出过的删出堆//
}
return 0;
}