インタビュアー: 一般的なソートアルゴリズムは何ですか?違い?

インタビュアー: 一般的なソートアルゴリズムは何ですか?違い?

[[426795]]

この記事はWeChatの公開アカウント「JS Daily Question」から転載したもので、著者はHuihuiです。この記事の転載についてはJS Daily Question公式アカウントまでご連絡ください。

1. 何ですか

ソートは、プログラム開発において非常に一般的な操作です。任意のデータ要素のセットをソートした後、それらを特定のルールに従ってソートされた順序付けられたシーケンスに変換できます。

ソートアルゴリズムはアルゴリズムの一種であり、その適用範囲は非常に狭いです。ソートアルゴリズムを徹底的に習得することは、プログラム開発に大いに役立ちます。

ソートアルゴリズムの品質は、主に時間の複雑さ、空間の複雑さ、および安定性から測定されます。

時間の計算量と空間の計算量については、すでに説明しました。ここでは、主に安定性の定義について見ていきます。

安定性とは、ソートするレコードのシーケンス内に同じキーワードを持つレコードが複数ある場合、ソート後もこれらのレコードの相対的な順序が変更されないことを意味します。

つまり、元のシーケンスではr[i] = r[j]であり、r[i]がr[j]の前にあり、ソートされたシーケンスでもr[i]がr[j]の前にある場合、このソートアルゴリズムは安定していると呼ばれ、そうでない場合は不安定と呼ばれます。

2. それらは何ですか

一般的なアルゴリズムソートアルゴリズムは次のとおりです。

  • バブルソート
  • 選択ソート
  • 挿入ソート
  • マージソート
  • クイックソート

バブルソート

シンプルで直感的なソートアルゴリズム。ソートする配列を繰り返し処理し、一度に 2 つの要素を比較して、順序が間違っている場合はそれらを交換します。

考え方は次のとおりです。

  • 隣接する要素を比較し、最初の要素が2番目の要素より大きい場合は、それらを交換します。
  • 隣接する要素の各ペアに対して同じ操作を実行します。最初のペアから始めて、最後のペアで終了します。最後の要素が最大の数値になるはずです。
  • 最後の要素を除くすべての要素に対して上記の手順を繰り返します。
  • 比較する数字がなくなるまで上記の手順を繰り返します。

選択ソート

選択ソートは、シンプルで直感的なソート アルゴリズムです。また、交換ソート アルゴリズムでもあります。

どのようなデータが入力されても、時間の計算量は O(n2) です。そのため、データサイズが小さいほど良いです

唯一の利点は、追加のメモリストレージスペースを占有しないことです。

考え方は次のとおりです。

ソートされていないシーケンス内の最小(最大)要素を見つけ、ソートされたシーケンスの先頭に格納します。

残りのソートされていない要素から最小 (最大) の要素を探し続け、それをソートされたシーケンスの最後に配置します。

すべての要素がソートされるまで手順 2 を繰り返します。

挿入ソート

挿入ソートはシンプルで直感的なソートアルゴリズムです

これは、順序付けられたシーケンスを構築することによって機能します。ソートされていないデータの場合は、ソートされたシーケンス内で後ろから前へスキャンし、対応する位置を見つけて挿入します。

解決策は次のとおりです。

  • ソートする配列をソートされた部分とソートされていない部分に分割します。最初は、最初の要素がソートされていると見なされます。
  • 2 番目の要素から始めて、ソートされたサブ配列内の要素の適切な位置を見つけ、そこに挿入します (挿入する要素が順序付けられたシーケンス内の要素と等しい場合は、挿入する要素を等しい要素の後に挿入します)。
  • 最後の要素が順序付けられたサブ配列に挿入されるまで、上記のプロセスを繰り返す。

マージソート

マージソートは、マージ操作に基づいた効果的なソートアルゴリズムです。

このアルゴリズムは、分割統治法の非常に典型的な応用です。

順序付けられたサブシーケンスをマージして、完全に順序付けられたシーケンスを取得します。つまり、最初に各サブシーケンスを順序付けし、次にサブシーケンスのセグメントを順序付けします。

解決策は次のとおりです。

  • 2 つのソートされたシーケンスの合計サイズを持つスペースを申請します。このスペースは、結合されたシーケンスを格納するために使用されます。
  • 2 つのポインタを設定します。その初期位置は、2 つのソートされたシーケンスの開始位置になります。
  • 2つのポインタが指す要素を比較し、比較的小さい要素を選択してマージスペースに配置し、ポインタを次の位置に移動します。
  • ポインタがシーケンスの最後に到達するまでステップ3を繰り返します。
  • 他のシーケンスの残りの要素をすべて、結合されたシーケンスの末尾に直接コピーします。

クイックソート

クイック ソートは、バブル ソート アルゴリズムの改良版です。基本的な考え方は、ソートするデータをソート パスを通じて 2 つの独立した部分に分割し、一方の部分のすべてのデータがもう一方の部分のすべてのデータよりも小さくなるというものです。

次に、このメソッドを使用して、データの 2 つの部分を個別にすばやく並べ替えます。並べ替えプロセス全体を再帰的に実行して、データ全体を順序付けられたシーケンスにすることができます。

解決策は次のとおりです。

  • シーケンスから要素を選択することを「ピボット」と呼びます。
  • 基本値より小さいすべての要素が基本値の前に配置され、基本値より大きいすべての要素が基本値の後に配置されるようにシーケンスを並べ替えます (同じ数字がどちらの側にあってもかまいません)。このパーティションが完了すると、ベンチマークはシリーズの途中になります。これをパーティション操作と呼びます。
  • 基本値より小さい要素の部分列と基本値より大きい要素の部分列を再帰的にソートする

3. 違い

上記のソートアルゴリズムに加えて、シェルソート、ヒープソートなどの他のソートアルゴリズムもあります。

違いは以下の図に示されています。

参考文献

  • https://www.runoob.com/w3cnote/bubble-sort.html
  • http://www.x-lab.info/post/sort-algorithm/
  • https://zhuanlan.zhihu.com/p/42586566

<<:  AIと人間のバンドが初めてコラボしてアルバムをリリース

>>:  将来のAIの世界における興味深い仕事

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

Google、少ないパラメータでテキスト分類を行う新モデル「pQRNN」を発表、BERTに匹敵する性能

最近、Googleは、昨年発表した「PRADO」をさらに改良した小型モデルでSOTA結果を達成した新...

人工知能が裁判官の判断に取って代われば、司法権は誤った方向に導かれる可能性がある

近年、社会構造の転換と国民の権利意識の強化に伴い、中国の裁判所が受理する事件の規模は毎年二桁増加し、...

...

2023年に出現するサイバー脅威、AI、量子コンピューティング、データ汚染まで

ハッカーや詐欺師が新しいテクノロジーを入手したり、古い脆弱性を悪用する新しい方法を考え出したりするに...

AIがコンピューティングをエッジに押し上げる

[[408175]]ここ数年の流行語といえば、エッジ コンピューティングは 5G や AI と密接に...

テンセント・ユートゥと厦門大学は、トレーニングを必要としないViT構造検索アルゴリズムを提案した。

最近、ViT はコンピューター ビジョンの分野で強力な競争力を発揮し、複数のタスクで驚くべき進歩を遂...

Huyaは人間とシーンの分離技術を使用して、顔を覆わずにスマートな弾丸スクリーンを作成します

【元記事は51CTO.comより】 「(段)幕」という言葉はシューティングゲームから生まれたもので、...

...

...

Google が AVA データベースを開始: 動画内の人間の行動を機械が認識できるようにする

[[207258]]コンピューター ビジョンはテクノロジー企業にとって恩恵となりつつあり、これまでは...

AIモデルをGTAの5つ星プレイヤーにしよう、視覚ベースのプログラム可能なエージェントOctopusが登場

ビデオゲームは今日、現実世界のシミュレーションとなり、無限の可能性を示しています。ゲーム「グランド・...

Microsoft Azure OpenAI への申請手順ガイド

以前は、Microsoft の Azure OpenAI は企業のみが利用でき、一般ユーザーはうまく...

3億7500万人の労働者が転職する?人工知能が代替できない分野はどれですか?

人工知能は急速に発展しています。データによると、2016年から2020年にかけて、中国の人工知能市場...

人工知能と拡張現実はオンラインショッピング行動に影響を与える

[[405357]]画像ソース: https://pixabay.com/images/id-468...

GNN初心者必読! Google Research が、SOTA グラフ ニューラル ネットワークをゼロから構築する方法を教えます

[[422426]]近年、ニューラル ネットワークは自然言語、画像、音声、その他のデータで大きな進歩...