1. アルゴリズムの評価基準 ソートアルゴリズムを説明する前に、まずアルゴリズムが一般的にどのような角度から評価されるかを理解しましょう。 アルゴリズムについて少しでも知っている人なら、このことは分かるでしょう。 「これら2つの基準は、時間の複雑さと空間の複雑さです」
そして一般的に、時間計算量は私たちが最も注意を払うものです。結局のところ、私たちの日常生活で気になるのは、ソフトウェアがどれだけ速く実行されるかです。それがとんでもなく遅いと、ユーザーエクスペリエンスは特に悪くなります。通常、私たちは、これがどれだけのメモリスペースを消費するかを尋ねません。 もう 1 つのポイントは、「時間計算量はアルゴリズムの核心である」ということです。結局のところ、少し大きい空間計算量は許容されますが、アルゴリズムの時間計算量を削減できない場合は、スペースを追加しても問題は解決しません。
このデータ構造は HashMap で、時間のためにスペースを犠牲にするデータ構造です。「Map は、キーが必要な要素を直接取得できます。」 HashMap が非常に強力であることがわかれば、大企業がデータ構造のソース コードを尋ねるときに HashMap のソース コードについて尋ねることが多い理由がわかります。その理由は、その設計が非常に悪いためです。 2. ソートアルゴリズムの分類 上記のアルゴリズムの評価基準を理解した後、これらのソートアルゴリズムがどのように分類されるかを確認する必要があります。分類方法は主に 2 つあります。 並べ替えの種類 ここに画像の説明を挿入 ここでの比較は、誰もが通常理解している比較と同じであり、つまり、ソートは主に比較によって行われます。
ここでの安定性については簡単に説明する必要があります。ここでの安定性とは、ソート後の同じ要素の相対的な位置がソート前と同じかどうかを指します。変化がない場合、アルゴリズムは安定していると呼ばれます。これは理解しにくいかもしれません。ここでは、次の図を使用して、印象を深めるのに役立ちます。 上記の概念を理解すると、ソートアルゴリズムを説明するときに提案されるいくつかの概念をよりよく理解できるようになります。 3. 古典的なソートアルゴリズムのトップ 10 - バブル ソート、選択ソート、挿入ソート 3.1-バブルソート アルゴリズムのアイデア: 泡といえば、まず頭に浮かぶのは、金魚が泡を吹いている下の写真でしょう。
図を見ると、上に行くほどバブルが大きくなっていることがわかります。これがバブルソートの核となる考え方です。各サイクルで、残りのソートされたシーケンスの最大値または最小値を見つけ、それをシーケンスの最後または先頭に置き換えます。理解するために、次の簡単な例を見てみましょう。 これがバブルソートの基本的な考え方です。バブルソートの特徴を簡単にまとめると次のようになります。
アルゴリズム図: ここに画像の説明を挿入 コード例:
ここに画像の説明を挿入 複雑性分析: バブルソートの基本的な考え方を理解した後、その時間計算量と空間計算量を分析する必要があります。
また、ソート処理全体を通じてスペースが追加されていることもわかります。このスペースは、定義した temp であり、主に要素の交換に役立ちます。したがって、バブル ソートのスペース計算量は O(1) です。 3.2- 選択ソート アルゴリズムの考え方: 選択ソートの鍵は選択です。選択の方法は、各サイクルで最小の要素を選択し、最小の要素をソートされたシーケンスの先頭の要素に置き換えることです。いつものように、次の図は、この選択プロセスをよりよく理解するのに役立ちます。 これは、基本的に理解できる選択ソートの基本概念です。上記のバブルソートと区別する必要があるのは、選択ソートは「比較が完了した後に2つの要素の位置を直接交換するのではなく、現在のシーケンスの最小の要素のみを記録する」ということです。最小の要素を見つけた後、最小の要素はキューの先頭の要素に置き換えられます。これを理解した後、選択ソートの特性について説明しましょう。
アルゴリズム図: ここに画像の説明を挿入 コード例:
複雑性分析: 選択ソートの基本的な考え方を理解した後、その時間計算量と空間計算量を分析する必要があります。
また、ソート処理全体を通じて 2 つのスペースが追加されることもわかります。このスペースは定義した temp と min なので、選択ソートのスペース複雑度も一定レベル、つまり O(1) になります。 3.3- 挿入ソート アルゴリズムのアイデア:挿入ソートのアルゴリズムのアイデアは、シーケンス全体を 2 つのセグメントに分割することです。1 つのセグメントはソートされたシーケンスであり、もう 1 つのセグメントはまだ必要がない状態です。たとえば、次の図に示すように: 挿入シーケンスは、2つのシーケンスに分割された後、ソートするシーケンスの先頭要素を選択し、順序付けられたシーケンスの末尾から始めて、その都度順序付けられたシーケンスに挿入します。要素よりも大きい場合は、要素を後ろにずらします。要素よりも小さい要素が現れると、現在の位置に挿入します。これが挿入ソートの名前の由来です。 長々と説明してもまだよく理解できないかもしれませんので、次の図でアルゴリズムの実行プロセスを詳しく説明しましょう。 挿入ソートアルゴリズムの基本的な考え方を理解した後、アルゴリズムの特徴を見てみましょう。
アルゴリズム図: ここに画像の説明を挿入 コード例:
ここに画像の説明を挿入 複雑性分析: 挿入ソートの基本的な考え方を理解した後、その時間計算量と空間計算量を分析する必要があります。
また、ソート処理全体を通じて 2 つのスペースが追加されることもわかります。このスペースは定義した temp と j なので、選択ソートのスペース計算量も一定レベル、つまり O(1) になります。 この記事はWeChat公式アカウント「萌萌哒铤铤」から転載したもので、以下のQRコードからフォローできます。この記事の転載については、Mengmengda Rangrangの公式アカウントまでご連絡ください。 |
<<: 「自然言語処理」とは何ですか? 具体的に何を「処理」するのですか?
>>: 2021年に注目すべき5つのAIと機械学習のトレンド
[51CTO.com オリジナル記事] Baidu は 2019 年第 2 四半期の財務報告を発表し...
ディープラーニングは自然言語処理において驚くべき進歩を遂げました。 Explosion、Huggin...
[[259612]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...
数日前、Intelは生成AI用のAIチップGaudi3を含む一連の新しいCPUを発売しました。計画に...
すべての AI プロジェクトにはある程度のリスクが伴い、生成 AI の急速な成長と展開により、セキュ...
この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...
混雑した市街地でドライバーが駐車スペースを見つけるのを助ける人工知能がバース大学で開発されている。こ...
チームに ML を導入させるにはどうすればよいのでしょうか。また、実行している既存のシステムと ML...
顔をスキャンするだけで支払いができます。顔をスキャンするだけでさまざまなゲートに出入りできます。顔を...
よく訓練された兵士であっても、手ぶらで任務を遂行することはできない。 データ サイエンティストには、...
先月末、Pika 1.0と呼ばれる動画生成AIモデルがソーシャルメディア上で話題になった。3Dアニメ...
機械が人間のように 3D の物体や環境を認識できるようにすることは、人工知能の分野における重要なトピ...