Javaソートアルゴリズムの概要(I):挿入ソート

Javaソートアルゴリズムの概要(I):挿入ソート

挿入ソートの基本的な操作は、ソートされた順序付けられたデータにデータを挿入し、それによって番号が 1 つ増加した新しい順序付けられたデータを取得することです。比較と交換の時間計算量は O(n^2) です。アルゴリズムは適応型です。データが基本的に順序付けられている場合、時間計算量は O(n) です。アルゴリズムは安定しており、オーバーヘッドが低くなっています。このアルゴリズムは、データが基本的に順序付けられている場合や、データの量が少ない場合に適しています。

挿入アルゴリズムは、ソートする配列を 2 つの部分に分割します。最初の部分には配列の最初の要素を除くすべての要素が含まれ、2 番目の部分にはこの 1 つの要素のみが含まれます。 *** 部分がソートされたら、ソートされた *** 部分の位置に *** 要素を挿入します。

アルゴリズムの説明

一般的に、挿入ソートは配列上でインプレースで実装されます。具体的なアルゴリズムは次のように説明されます。

1. 最初の要素から始めて、要素はソートされているとみなすことができます

2. 次の要素を取り出し、ソートされた要素の順序で後ろから前へスキャンします。

3. 要素(すでにソートされている)が新しい要素より大きい場合は、要素を次の位置に移動する

4. ソートされた要素が新しい要素より小さいか等しい位置が見つかるまで、手順3を繰り返します。

5. 新しい要素を次の位置に挿入する

6. 手順2を繰り返します

比較演算のコストが交換演算のコストよりも大きい場合は、バイナリ検索を使用して比較演算の数を減らすことができます。このアルゴリズムは、バイナリ検索ソートと呼ばれる挿入ソートのバリエーションと考えることができます。

コードの実装

  1. 公共  void insertionSort() { // 挿入ソート 
  2. intアウト、イン;
  3. int count1 = 0 , count2 = 0 ; // コピー数、比較回数 
  4. (out = 1 ; out < nElems; out++)の場合{
  5. 長いtemp = a[out];
  6. イン = アウト;
  7. ブール値flag=in> 0 &&a[in- 1 ]>=temp;
  8. while (フラグ){
  9. (a[in- 1 ]>=temp)の場合{
  10. 0以上の場合
  11. a[in]=a[in- 1 ];
  12. カウント1++;
  13. - で;
  14. }
  15. }
  16. カウント2++;
  17. フラグ=in> 0 &&a[in- 1 ]>=temp;
  18. }
  19. a[in] = 温度;
  20. }
  21. System.out.println( "コピー数: " + count1 + "比較数: " + count2);
  22. }

データがすでに特定の順序になっている場合、挿入ソートの方が効率的です。しかし、データが不規則な場合は大量のデータを移動する必要があり、その効率はバブルソートや選択ソートと同じくらい悪くなります。

【編集者のおすすめ】

  1. 18.1.4 挿入ソート
  2. C# 直接挿入ソートの紹介
  3. C++ ソートに関する 4 つの古典的な講義: 挿入ソート

<<:  Java ソートアルゴリズムの概要 (II): 選択ソート

>>:  文字の組み合わせをソートするJavaアルゴリズム

ブログ    
ブログ    
ブログ    

推薦する

ハッシュテーブルアルゴリズムの最初から最後までの徹底的な分析

注: この記事は 3 つの部分に分かれています。最初の部分は、Baidu の面接の質問における To...

...

...

プログラマーが知っておくべき 20 世紀の 10 大アルゴリズム

トップ10のアルゴリズムを発明したアルゴリズムの巨匠たち1. 1946年のモンテカルロ法[1946年...

トランスフォーマーベースの効率的で低遅延のストリーミング音声認識モデル

シナリオの観点から、音声認識はストリーミング音声認識と非ストリーミング音声認識に分けられます。非スト...

生成型 AI は急速な発展期を迎えています。その応用はどのように実装されるのでしょうか?

先月、国際的に有名な学術誌「ネイチャー」が2023年のトップ10を発表しました。世界的な科学イベント...

AI教育の知能化、パーソナライゼーション、多様化は今後さらに発展するだろう

人工知能教育は主に、ユーザーの学習行動データを分析・処理することで、パーソナライズされた学習コンテン...

対話 | QingCloud CTO: AI が到来し、基本的なクラウド サービス プロバイダーもそれに備える必要があります。

[51CTO記者の李玲玲が北京からレポート] 真夏が到来し、人工知能も北京の天気のように、より暑い...

人工知能と機械学習の購入者ガイド

B2B ソフトウェアの営業およびマーケティング チームは、「人工知能 (AI)」という用語を好んで使...

AutoGluonはオープンソースであり、人間の錬金術師を超えるパフォーマンスを発揮します

自動化された機械学習はどれほど優れたものになるのでしょうか?たとえば、MobileNet1.0 バッ...

レノボグループが従業員の払い戻しの内部監査を実施できるようRPAロボットを導入

数万人の従業員を抱える大企業にとって、従業員の払い戻しに関する内部監査の難しさは想像に難くありません...

[トイレに座ってアルゴリズムを読む] アルゴリズム 8: 賢い隣接リスト (配列の実装)

前回は、空間と時間の複雑さがともにN 2であるグラフの隣接行列保存方法を紹介しました。今回は、グラフ...

人間は知能を持っているのに、なぜモノのインターネットには人工知能が必要なのでしょうか?

IoT にインテリジェンスが必要なのはなぜですか?人工知能は登場しましたが、具体的な概念はなく、ま...

中国人工知能産業発展連盟メディアプロジェクトグループが設立され、51CTOは連盟の最初の専門メディアの1つになりました。

中国人工知能産業発展連盟メディアプロジェクトグループの設立会議が2018年1月25日に北京で開催され...