自動調整
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 堆可以由動態陣列實現的。優先順序佇列中比較重要的兩個操作是插入和刪除。如下簡...