2012-01-20 22 views
0

それは:優先度キューを実装するプログラマのデフォルト選択は何ですか?

  • ヒープ?
  • 未分類リスト?
  • ソートリスト?
  • リンクされたリスト?
  • 他のデータ構造ですか?

優先キューを実装するときのプログラマのデフォルト/自然な選択はどれですか?また、その特定の選択肢が他のものより優先される理由は何ですか?

+0

ウィキペディアの記事は、これらの質問のほとんどに答えています:http://en.wikipedia.org/wiki/Priority_queue – NPE

+0

これは興味深い質問ですが、ここで回答するのはあまりにも主観的です。典型的には、フィボナッチヒープやエムードボアキューのような、より高度なものを使用する理由がない限り、あなたの言語の選択肢で使用できるものを使用するだけです。 – templatetypedef

+1

'std :: priority_queue' – PlasmaHH

答えて

0

私はスピードのためにヒープを言うでしょう。

リストは、(1)Oでdeleteminを可能とするが、挿入

+0

ソートされたリストをO(nlogn) – Gal

2

のためにO(n)を有し、一方のリストは、私は()N(ログ)のアクセスが可能である(挿入/削除)ヒープOながら線形アクセス時間を持っていますLadder Queue(優先度キューO(1))を実装することを推奨します。

正式な定義:私はプライオリティキューを必要としてきた奇妙な機会にLadder queue: An O(1) priority queue structure for large-scale discrete event simulation

+0

+1、興味深いものでインスタンス化する必要がありますが、ヒープはO(n)でインスタンス化できることを追加します。 – qiao

+0

彼らは15ドルで記事を販売しています。 –

+0

qiao:=]。記事の価格について:図書館や大学のネットワークを通じて無料で入手できます。 –

0

、そこに優先順位のごく設定されていたので、私は「普通」の配列を逃れることができました優先順位によってインデックス付けされたFIFOキュー。 pop()メソッドは、最も優先順位の高い末端から配列を反復し、非ゼロカウントを探します。