を探しに来た:辞書を使用する代わりにソートしてから、私はハッシュテーブルとの考えを勉強していた
要素を検索する代わりに、最初のバイナリ検索をやって、リストをソートするための辞書を使用しないのはなぜ?我々はすべての要素を通過する必要があるため
- 我々は
O(n)
(と思う)の時間で辞書にリストを変換することができます(私は複数回検索すると仮定)。 - 私たちは辞書にこれらすべての要素を追加し、この辞書の準備ができたら、私たちはその後、
O(1)
時間(平均)とO(n)
で任意の要素を検索することができます O(1)
時間がかかりますが今、最悪の場合
です私たちが平均的なケースについて話したら、O(n)
は、他のソートアルゴリズムよりも優れているのは、たぶん彼らがO(nlogn)
を取るからです。私が言ったことのすべてについて正しいのであれば、どうしてこのようにしませんか?
ソートされていない辞書や配列では行えないソートされた要素では、さまざまなことができることは知っていますが、検索にのみ固執すれば、他のソートアルゴリズム?
または、要素を検索するためにO(n)のソートされていないリストを反復処理するだけですか? – timgeb
@timgeb次にn回検索する必要がある場合は、 'n * O(n)'という複雑さがあり、最初にソートしてからn回検索すると 'n * O(logn)'となります。あなたは何回でもO(1)の時間で何回でも検索することができます。 –
@jamessmithええ、何回も検索したいとは言いませんでした。その場合は、リストをセットに変換してください(なぜあなたは辞書を望みますか?)をO(n)に格納し、次にO(1)の包含チェックを行います。あなたが分けることができるソートされたリストを保持することは、あなたが注文を必要とするとき、および/または要素を複製するときにのみ役立ちます。 – timgeb