[プログラミングビーズ]検索、並べ替え、B +ツリー

序文

  「プログラミングパール」は確かに優れた本であり、アルゴリズムとデータ構造を解釈します。問題の分析は、プログラマがデータ構造とアルゴリズムに対する態度を変えるのに役立ちます。内部を検索して並べ替えます。

探す

  検索、検索、最も重要な概念はバイナリ検索です。多くのデータ構造は実際にジャンプテーブル、赤黒木、B +ツリーなどのバイナリ検索の概念を適用します

アプリケーション:データベース

  アプリケーションの問題に適切なデータ構造を選択することが最も重要です。多くの場合、プログラマは時間と空間のどちらかを選択する必要があることを知っています。適切な構造を選択することは、時間と空間のオーバーヘッドを両方とも持つ重要な方法の1つです。

  なぜB +ツリーなのですか?この質問はデータベースのデータ構造についてよく聞かれますが、実際の答えは、B +ツリーが次の3つのポイントを満たし、これらの3つのポイントはSQLステートメントの一般的な操作にすぎないためです。

  1. idに基づいて要素をすばやく見つけることができます。
  2. 要素の特定の範囲内のすべての要素をすばやく検索するためのサポート。
  3. 特定の要素値の前後のn個の要素をすばやく見つけることができます。

  したがって、問題が定義された後、対応するデータ構造の検索を開始します。最初のポイントはハッシュについて考えますが、ハッシュは2と3をサポートしていないため、妥協し、バイナリ検索を選択し、オプションのデータのバイナリ検索を行う必要があります。構造:バランスのとれた二分木、ジャンプテーブル、赤と黒のツリー、B +ツリー。

  3番目の点は、二重にリンクされたリストを考えるのは自然ですが、リンクされたリストは2番目の点を満たしていません。現時点では、ジャンプテーブルのデータ構造がより適切です。

【写真ソースネットワーク】

  次に、ジャンプテーブルを改善すると、B +ツリーができます下の図を見ると、ノードに複数の要素が必要なのはなぜですか?実際、その理由は、ディスクとメモリの速度のギャップが原因です。ノードからデータを一度にディスクからロードするのが最善です。ノードは最適な要素を格納し、この値のサイズはキャッシュページのサイズ16Kです。

【写真ソースネットワーク】

  実際、もう1つ注目に値するものがあります。MongoDBで使用されるデータ構造はB +ツリーではなく、Bツリーです。実際、簡単に理解できます。通常、ドキュメントデータベースの検索要件は異なります。値を見つける必要があるだけで、ほとんど実行しません範囲検索

アプリケーション:9宮殿キーボード 

  この例は90年代以降のほとんどの人によく知られています。その世代のプログラマーは、多くの人がこのニーズに遭遇したと推定しました。次の図は、データが特定の単語の場合、0、1、2、3しか押すことができない9角キーボードです。 、4、5、6、7、8、9のキーボード、たとえば、英語とピンインの両方のFanとDanはすべて同じキーボード番号を押します。つまり、すべての単語に独自のキーボード番号があります。同じキーを持つ小規模パートナーの要件:ユーザーのキー入力に応じて、何億ものレコードの中から「ファン」という単語のレコードをすばやく見つけるにはどうすればよいですか?

 

 

  この質問では2種類の質問が使用されます。1つは並べ替え、2つ目は検索です。当然、並べ替えは数億件のレコードを並べ替えることです。検索ではバイナリ検索を使用します。質問の要点は、どのような並べ替えですか。

  ロゴ:この単語は、Zhujiのプログラミングで最初に見られました。同じキーが同音異義語と呼ばれ、同音異義語の正のシーケンスは一意であるため、このシーケンスは同音異義語を表しています。すべてのラベルが添付されたら、ラベルに従って再度並べ替えることができるため、マージソートを使用していると仮定して、順序付けられたレコードが表示されます。次の検索についてはあまり触れません。この時点で、問題は解決されました。

 

おすすめ

転載: www.cnblogs.com/iCanhua/p/12723681.html