堆优先级队列
優先級隊列可以用堆表示。在一個給定的作業調度或者基于事件驅動的模型中,優先級隊列的元素對應著應用中的對象。通常,我們需要確定一個給定的隊列中元素所對應的應用對象。當用堆來實現優先級隊列時,需要在堆中的每個元素里存儲對應應用對象的柄(handle)。下面討論如何實現基于堆的最大優先級隊列。
#include <iostream> using namespace std; int size=0; void Maxheapify(int A[],int i){ int left=2*i,right=2*i+1,largest; if (left<=size&&A[left]>A[i]) { largest=left; } else { largest=i; } if (right<=size&&A[right]>A[largest]) { largest=right; } if (largest!=i) { int temp=A[i]; A[i]=A[largest]; A[largest]=temp; Maxheapify(A,largest); } } /*從堆中取出最大值*/ int HeapMax(int A[]){if (size<1){return 0;}int max=A[1];A[1]=A[size-1];Maxheapify(A,1);return max; } /*堆插入*/ void Heapinsert(int A[],int key){int i=++size,temp;A[i]=key;while (i>1&&A[i/2]<A[i]){temp=A[i];A[i]=A[i/2];A[i/2]=temp;i=i/2;} } int main(){ int A[11]; Heapinsert(A,5);Heapinsert(A,1);Heapinsert(A,8);Heapinsert(A,10);for (int i=1;i<=4;i++) { cout<<A[i]<<endl; } return 0; }轉載于:https://www.cnblogs.com/yue-/archive/2012/05/19/6260076.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
- 上一篇: Metropolis light tra
- 下一篇: HTTP Status 403 - Ac