標籤:out span gre using queue std clu priority 很多
1 //c++用priority_queue實現最小堆,並求解很多數中的最大的n個數 2 #include <iostream> 3 #include <queue> 4 #include <time.h> 5 #include <vector> 6 using namespace std; 7 struct Node { 8 double value; 9 int idx;10 Node (double v, int i): value(v), idx(i) {}11 friend bool operator > (const struct Node &n1, const struct Node &n2) {12 return n1.value > n2.value;13 } 14 };15 int main(){16 //測試資料17 vector<double> v;18 srand((int)time(NULL));19 for(int i=0;i<100;i++){20 double tt=rand()%100;21 cout<<tt<<endl;22 v.push_back(tt);23 }24 cout<<"------------------------im the line-----------------------"<<endl;25 //建立一個最小堆26 priority_queue<Node, vector<Node>, greater<Node>> minheap;27 //首先先建立一個大小為n的堆28 for (int i=0;i<10;i++){29 Node Notemp(v[i],i);30 minheap.push(Notemp);31 }32 //後面的都進行比較後再選擇是否放入33 for(int i=10;i<100;i++){34 //當前的node35 Node Noteamp(v[i],i);36 // cout<<Noteamp.value<<endl;37 if(minheap.top().value<Noteamp.value){38 //將這個大的數放進去39 minheap.push(Noteamp);40 //將堆頂最小的數彈出41 minheap.pop();42 }43 else{44 continue;45 }46 }47 //輸出48 for(size_t i=0;i<10;i++){49 cout<<minheap.top().value<<endl;50 minheap.pop();51 }52 53 }
c++用priority_queue實現最小堆,並求解最大的n個數