2

必要な機能のみが必要な場合に、キーと値のペアを格納するために使用するデータ構造を決定しようとしています

  • 挿入
  • 調べる

具体的には、ペアを削除したり、キー/値/ペアを反復処理したりする必要はありません。

キーは整数タプルで、値はポインター (参照など) です。(多くの)オブジェクトに分散した数百万のペアのみを保存しています。

現在、私はどちらかを使用することを検討しています

  • ハッシュテーブル
  • kd ツリー
  • bツリー

私は(挿入/検索時間のために)ハッシュテーブルに傾いていますO(1)が、自分の傾向を確認したかったのです。

どの構造(上記またはその他の構造)をお勧めしますか、またその理由は何ですか? ハッシュ テーブルを推奨する場合、オブジェクトごとに個別のテーブルを作成するか、単一のテーブルを作成してオブジェクトの ID をキー タプルの一部として使用する必要がありますか?

4

4 に答える 4

4

重要な操作はすべて O(1) であるため、ここではハッシュテーブルが最適な選択です (そのため、複数のハッシュテーブルを作成することについて心配する必要はありません)。

于 2009-08-20T14:00:06.857 に答える
1

ここではハッシュ テーブルが役立ちます。複数のテーブルを使用する理由はありません。

于 2009-08-20T14:05:15.757 に答える
1

私はハッシュ テーブルの大ファンです。ハッシュ テーブルは簡単で、ほぼすべての主要な言語で利用できる実装があるからです。O(1) 挿入/ルックアップは特に優れた機能です。

メモリを節約するために、おそらく単一のテーブルを使用する必要があります。ハッシュ テーブルはメモリの点で非効率であることで有名であり、単一のテーブルを使用することでそれを最小限に抑えることができます。

于 2009-08-20T14:02:54.997 に答える
0

ほとんどのツリーのルックアップ時間は O(n ln n) ですが、ハッシュテーブルのルックアップ時間は O(1) であるため、これを使用します。これも非常に一般的であり、多くの場合、実装はブート用に高度に最適化されています。

于 2009-08-20T14:05:38.660 に答える