質問

どちらの方が時間がかかりますか?

二分探索ツリーに格納されているすべての項目をソート順に出力するか、ハッシュ テーブルに格納されているすべてのアイテムをソート順に出力します。

ハッシュ テーブルは決してソートされないため、ハッシュ テーブルの項目をソートされた順序で出力するには時間がかかります。そしてBSTとは?

役に立ちましたか?

解決

あなたは正しいです。ハッシュテーブルではない彼らの自然なソート順序によって、いくつかのハッシュ関数によってソートされているので、あなたは(あなたがOで自然な順序でバイナリ検索ツリーをたどることができ、一方、全てのエントリO(N)を抽出し、それらO(NlogN)をソートする必要があるだろうN)。

注しかし、Javaで、例えば、そこにあることをあなたがそれをソートしてトラバースすることができることができるように、あなたにそれが追加された順序で横断することができますが、ハッシュのいくつかの利点を与えるLinkedHashSetのとのLinkedHashMapこれそのソート順に、並びにハッシュによってアイテムを抽出する。

他のヒント

、ハッシュテーブルを使用すると、おそらく望む方法で「ソート」正しくありません。配置は一種の一種の近傍であることが多いが、ハッシュテーブル内の要素はかなり完全に、通常、ソートされていません。しかし、彼らは通常、同様のフレーズ乱暴に異なるハッシュ関数、に従って配置されています。それは人間が使用する任意のメトリックでソートではありません。

あなたのコレクションで行っている主なものは、ソート順で、それを印刷している場合は、

、あなたはBSTのいくつかのタイプを使用してオフに最高です。

二分探索木を使用すると、深さ優先走査を行う場合、あなたはソート順(あなたが一貫性のある比較機能を持っていると仮定)内の項目を見つけるような方法で保存されています。単にツリーにすでにアイテムを返すのビッグOは、ツリーをトラバースのビッグOになります。

あなたはハッシュテーブルについて正しい、彼らはソートされません。実際には、プレーンなハッシュテーブル内のすべてを列挙するためには、あなたがして並べ替え、あなたが得るもの、それを引き出し、そこにあるものを見るためにすべてのバケツを確認する必要があります。作品の多くは、その外にソートされたリストを取得します。

ハッシュ・テーブルがデータをソートされていないので、ハッシュテーブルに格納された

修正、印刷ソートされたデータが遅くなるであろう。それはちょうどあなたの特定の項目を見つけるための簡単な方法を提供します。で、つまり、アイテムが一定の時間内に見つけることができると言われて、「ビッグO記法を」 O(1)時間

データはすでにあなたのためにソートされているので、

一方で、あなたは「対数の時間」でのバイナリ検索ツリー(O(n個のログ))でアイテムを見つけることができます。

だから目標は、ソートされたリストを印刷する場合、あなたはソート順に格納されたデータ(すなわち、二分木)を有するオフもはるかに優れています。

をお楽しみください、

ロバート・C. Cartaino

これにより、いくつかの興味深い疑問が生じます。以下を考慮すると、検索ツリーは依然として高速ですか?

  1. ハッシュ テーブルと BST の両方のセットアップ時間を組み込みますか?
  2. ハッシュ アルゴリズムが並べ替えられた単語のリストを生成する場合。技術的には、そのようなアルゴリズムを使用するハッシュ テーブルを作成できます。この場合、BST とハッシュ テーブルの速度は、ソートされた順序でハッシュ テーブルを満たすのにかかる時間に依存することになります。

また、バイナリツリー対スキップリストの関連考慮事項をチェックアウト:バイナリツリー対スキップリスト

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top