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と機械学習のトレンド
執筆者:Qianshan最近、海外メディアAnalytics India Magazineによると、...
OpenAIのGPTストアにはオープンソースの代替品がある——ハグフェイスより。同社が新たに立ち上げ...
最近、中国科学技術大学の李伝鋒氏のチームが朗報を報告した。彼らは機械学習を量子力学の基本問題の研究に...
世界初の生成型ロボットエージェントがリリースされました!長い間、大規模なインターネットデータでトレー...
「墜落」とは模型飛行機の用語です。簡単に言うと、模型飛行機が不適切な操作や機械の故障により異常に地...
ロジスティック回帰は、バイナリ分類タスクで最も一般的に使用される機械学習アルゴリズムの 1 つです。...
パート01 顔認識技術の概要顔認識技術は生体認証技術の一種で、人物の顔の特定の特徴(目、鼻、口、眉毛...
今年も大学入試シーズンがやってきました。私が大学受験をしていた頃には、この言葉が流行っていたのを覚え...
世界中の企業は、競合他社に対して競争上の優位性を獲得するのに役立つ高度なテクノロジーを常に探していま...
バーチャルリアリティヘッドセットは何年も前から市場に出回っており、多くのティーンエイジャーもこれらの...
今日のペースが速く競争の激しいビジネス環境において、サプライ チェーン管理は成功に不可欠な要素です。...
一部の専門家は、人間は簡単に知能ロボットを作成し、それが知能を持っていることを知ることができると考え...
デジタル変革の時代において、データセンターは現代の企業のバックボーンを支える上で重要な役割を果たしま...