6

Why are most priority/heap queues implemented as 0 being the highest priority? I'm assuming I'm missing out some key mathematical principle. As I was implementing my own priority queue recently it seemed easier to write the insert function if priority went up with the integer value, but apparently people smarter than me think it should go the other way.

Any ideas?

4

6 に答える 6

12

ほとんどのプライオリティ キューは、フィボナッチ ヒープまたは類似のものとして実装されます。そのデータ構造は一定時間内に最小値を抽出することをサポートしているため、0 を最高の優先度にして、最小値を抽出することでキューから要素を取り出すのが自然になります。

于 2009-04-10T22:19:40.083 に答える
6

増加し続ける場合、どのようにして何かを最高の優先度に設定できますか? (+1 rossfab の回答:)

于 2009-04-10T22:29:38.873 に答える
2

設計上の理由はないと思います。これはおそらく、ほとんどのプログラマーが 0 を最初の要素と考えることに慣れているためです。別の理由として、列挙子が 0 から始まるため、最初に定義された列挙型の "最高" 整数値が 0 になることが考えられます。

于 2009-04-10T22:21:18.240 に答える
0

プライオリティ キューに固有のもので、0 が最高のプライオリティとしてより適切な選択となるものは何もありません。ただし、再利用可能な実装を作成する場合は、何かを選択する必要があります。優先順位に使用する整数値または浮動小数点値のタイプに関係なく、0 は明確に定義されています。

非公開の実装を作成する場合でも、256 の優先度レベルだけが必要であり、unsigned char を優先度として使用し、255 を最優先度としていると判断した場合、それ以上の優先度が必要であると判断した場合は、すべてのコードを注意深く調べる必要があります。レベル。

于 2009-06-09T16:10:06.293 に答える