STL 堆排序其实就是创建了一个二叉树进行排序,是一种快速的排序算法,其时间复杂度为 O(N*logN)。
参考代码如下所示:
#include<vector>
#include<algorithm>
#include<iostream>
using namespace std;
void print(int x)
{
cout<<x<<' ';
}
int main()
{
vector<int> v;
v.push_back(10);
v.push_back(9);
v.push_back(12);
v.push_back(1);
v.push_back(4);
v.push_back(3);
v.push_back(111);
v.push_back(7);
v.push_back(9);
for_each(v.begin(),v.end(),print);
cout<<endl;
make_heap(v.begin(),v.end()); //建堆
sort_heap(v.begin(),v.end()); //堆排序
for_each(v.begin(),v.end(),print);
cout<<endl;
return 0;
}