ヒープの作成にはO(n)時間かかりますが、ヒープ(または優先度キュー)への挿入にはlog(n)時間かかります。n個の入力を取得して優先度キューに挿入すると、操作の時間の複雑さO(n)またはO(n * log(n)))。
また、ヒープ全体を空にする場合(つまり、n個の削除)にも同じ結果が保持されますか?
サイズn
の配列があり、すべてのアイテムからヒープを一度に構築する場合、FloydのアルゴリズムはO(n)複雑さでそれを行うことができます。 ヒープの構築 。これは、コンテナパラメータを受け入れる std :: priority_queueコンストラクタ に対応します。
n
アイテムを一度に1つずつ追加する空の優先度キューがある場合、複雑さはO(n * log(n))です。
したがって、キューを作成する前にキューに入れるすべてのアイテムがある場合、最初の方法の方が効率的です。キューを維持する必要がある場合は、2番目の方法(アイテムを個別に追加)を使用します。つまり、一定期間にわたる要素の追加と削除です。
優先キューからn
アイテムを削除することもO(n * log(n))です。
std :: priority_queue のドキュメントには、すべての操作の実行時の複雑さが含まれています。