查找数组第k大,是特别经典的算法题,也有很多实现方法,用堆(优先队列)实现,相对比较简单,复杂度也还行,下面就是用stl中的priority_queue来实现的简单程序
int findkth_priotity_queue(int * a, int size, int kth)
{
priority_queue<int> que;
//如果找第k小可以用priority_queue<int, vector<int>, greater<int>> que
//当然依然可以自己写比较函数
while (--size)
{
que.push(a[size]);
}
while (--kth)
{
que.pop();
}
return que.top();
}