根据自己命名习惯与方便理解进行实现快速排序,仅做记录,后续完善。
struct bigHeapFunc
{
bool operator()(pair<int, int> a, pair<int, int> b)
{
//优先队列的队首元素优先级最高
//结果为true时: b的优先级高
//结果为false时: a的优先级高
if(a.second > b.second)
return false;
else
return true;
//等同于下面
//return a.second < b.second;
}
};
struct smallHeapFunc
{
bool operator()(pair<int, int> a, pair<int, int> b)
{
//优先队列的队首元素优先级最高
//结果为true时: b的优先级高
//结果为false时: a的优先级高
if(a.second < b.second)
return false;
else
return true;
//等同于下面
//return a.second > b.second;
}
};
//构建一个大顶堆
priority_queue<int,vector<int>,less<int>> big_heap;
//多个元素
priority_queue<pair<int,int>,vector<pair<int,int>>,bigHeapFunc> big_heap2;
//构造一个小顶堆
priority_queue<int,vector<int>,greater<int>> small_heap;
//多个元素
priority_queue<pair<int,int>,vector<pair<int,int>>,smallHeapFunc> small_heap2;
|