关于堆排序
怎么根据优先级排序
#include <iostream> #include <queue> #include <cstdlib> using namespace std; struct cnbeta { int data , start , time; friend bool operator< (const struct cnbeta &a,const struct cnbeta &b) //重载<操作符 { if(a.data == b.data) if(a.time == b.time) return a.start > b.start ; //最后比较通话开始时间,按从小到大排 else return a.time > b.time;//从小到大排通话时间 return a.data > b.data ;//从小到大排日期 } }; priority_queue <cnbeta> cn; int main() { struct cnbeta tmp; tmp.data = 1; tmp.time = 2; tmp.start = 3; cn.push(tmp); tmp.data = 1; tmp.time = 1; tmp.start = 3; cn.push(tmp); tmp.data = 2; tmp.time = 3; tmp.start = 4; cn.push(tmp); while(!cn.empty()) { tmp = cn.top(); cn.pop(); cout << tmp.data << " " << tmp.time << " " << tmp.start << endl; } system("pause"); return 0; }
#include <iostream> #include <algorithm> #include <cstdlib> using namespace std; struct cnbeta { int date , start , time; }cn[100]; int cmp(const struct cnbeta &a , const struct cnbeta &b) //自定义的sort的比较函数 { if(a.date == b.date) if(a.time == b.time) return a.start < b.start; //比较通话开始时间,按从小到大排 else return a.time < b.time; //从小到大排通话时间 return a.date < b.date; //从小到大排日期 } int main() { int i; cn[0].date = 1; cn[0].time = 2; cn[0].start = 3; cn[1].date = 1; cn[1].time = 1; cn[1].start = 3; cn[2].date = 2; cn[2].time = 3; cn[2].start = 4; sort(cn,cn+3,cmp); //对数据排序 for (i = 0; i < 3 ; i++) cout << cn[i].date << " " << cn[i].time << " " << cn[i].start << endl; system("pause"); return 0; }