優先順序佇列的簡單實現

2021-10-07 21:05:37 字數 2402 閱讀 7597

自動調整

namespace my

template

<

class

inputiterator

>

priority_queue

(inputiterator first,inputiterator last):c

(first,last)

public

:bool

empty()

size_t size()

public

:void

push

(const t &x)

void

pop(

) t top()

private

: cont c;

//容器

comper comp;

//比較仿函式};

};intmain()

; my::priority_queue<

int>

pq(v.

begin()

,v.end()

);cout<

pq.push

(100);

pq.push

(200);

cout<

top();

pq.pop();

cout<

top();

return0;

}

手動調整

namespace my

template

<

class

inputiterator

>

priority_queue

(inputiterator first,inputiterator last):c

(first,last)

}public

:void

show_heap()

const

protected

://向下調整

void

_adjustdown

(int start,

int n)

//交換

else

break;}

}private

: cont c;

//容器

comper comp;

//比較仿函式};

};intmain()

; my::priority_queue<

int>

pq(v.

begin()

,v.end()

);pq.

show_heap()

;return0;

}

結果看還不錯~

://向下調整

void

_adjustdown

(int start,

int n)

//交換

else

break;}

}//向上調整

void

_adjustup

(int start)

else

break;}

}private

: cont c;

//容器

comper comp;

//比較仿函式};

};intmain()

; my::priority_queue<

int>

pq(v.

begin()

,v.end()

);//my::priority_queue,generate> pq(v.begin(),v.end());//小堆

pq.show_heap()

; pq.

push(15

);pq.

pop();

pq.show_heap()

;return0;

}

c 簡單實現優先順序佇列

優先順序佇列 優先順序佇列 是不同於先進先出佇列的另一種佇列。每次從佇列中取出的是具有最高優先權的元素。include using namespace std template struct node 節點實現佇列 template class priority queue public prior...

優先順序佇列的實現

優先順序佇列 佇列裡面的所有元素都有相應的權值,元素的刪除順序由這些權值決定。優先順序佇列的實現一般用堆來實現其效率比一般的實現要高。要弄清楚堆我們得先弄清楚下面的定義 一顆大根樹 小根樹 是這樣一棵樹,其中每個節點的值都大於 小於 或等於其子節點 如果有子節點的話 的值。大根堆 乙個大根堆 小根堆...

優先順序佇列的實現

首先優先順序佇列的概念脫胎於佇列,佇列有先進先出的概念,優先順序佇列則根據優先順序的次序從佇列中彈出元素。優先佇列的底層實現是堆,因為堆的插入時間複雜度為o logn 所以優先順序佇列的入隊操作的時間複雜度也是o logn 堆可以由動態陣列實現的。優先順序佇列中比較重要的兩個操作是插入和刪除。如下簡...