更新时间:2016-04-22 20:38:44浏览次数:1+次
先看看实现吧:
//堆排序算法
#include "iostream"
#include "windows.h"
#include "algorithm"
#include "vector"
#include "iterator"
using namespace std;
int main()
{
vector<int> coll;
copy(istream_iterator<int>(cin),istream_iterator<int>(),back_inserter(coll));
//输出vector中的数据
cout<<"原vector中的数据:"<<endl;
copy(coll.begin(),coll.end(),ostream_iterator<int>(cout," "));
cout<<endl;
make_heap(coll.begin(),coll.end());//将区间内的元素转化成heap
cout<<"输出将vector排成heap后的数据:"<<endl;
copy(coll.begin(),coll.end(),ostream_iterator<int>(cout," "));
cout<<endl;
pop_heap(coll.begin(),coll.end());//去除heap中的下一个元素
coll.pop_back();
cout<<"输出pop的第一个元素:"<<endl;
copy(coll.begin(),coll.end(),ostream_iterator<int>(cout," "));
cout<<endl;
coll.push_back(17);
cout<<"输出添加了元素之后的heap:"<<endl;
push_heap(coll.begin(),coll.end());
copy(coll.begin(),coll.end(),ostream_iterator<int>(cout," "));
cout<<endl;
sort_heap(coll.begin(),coll.end());
cout<<"输出sort之后的不再是heap的数据:"<<endl;
copy(coll.begin(),coll.end(),ostream_iterator<int>(cout," "));
cout<<endl;
system("pause");
return 0;
}
相关资讯