基本的なソートアルゴリズム(B)

挿入ソート

挿入ソートアルゴリズムは、ほとんど手を終え、人々とのカードを再生するとき挿入ソートが機能し、ソートする要素の数が少ないために効果的です。往走査からソートされた順序でソートされていないデータについて、対応する挿入位置を見つけます。

すなわち、適切な場所を見つけるために、既に配列一つずつ比較順序付け要素を挿入します。

擬似コードを表し、

 

長さ1 [A] - J <用

     [J] - キー<を行います

           私は< - J-1を

          一方、(I> 0 && A [i]が>キー)

               [私は+ 1] = A [i]を行います

                      私は< - I-1

       [I + 1] =キー

Javaは達成します

      クラスInsertion_Sort {

                  パブリック静的無効メイン(文字列[] args){

                              INT [] A =新たINT [] {2,4,3,6,1,1,7,4}; //ソートされていない配列

                              int型のlen = A.length。

                              {(J ++ INT J = 0; J <A.length)のために

                                      INTキー= A [J]; //要素を挿入します

                                      int型I = J - 1; // 0 - J-1配列をソートされ、A [j]は[0] -A [i]の中に挿入されます

                                      一方、(I> 0 && A [i]が>キー){//一一比较

                                              [I + 1] [I] =。

                                              私 - ;

                                      }

                                      [私は+ 1]キー=; //挿入

                              }

                      }

                   }

アルゴリズムの複雑さ

             列をソートする挿入ソートは、好ましくは、ケースは、この時間は動作のみを交換することなく、N-1に時間を比較する必要が、注文されたが、時間複雑度はO(N)

すべての要素が逆の順序でランク付けされる最悪の場合、この時間は、nを比較する必要がある(N-1)/ 2倍、即ち、+ 0,1 + ... + N-1回、時間複雑度は、O(n²)であります平均時間複雑さの挿入ソートはO(n²)

アルゴリズム分析

         ビューの時間の複雑さの点から、それはデータアプリケーションの大量のソート挿入ソートには適していません。しかし、規模の一種の少量で、効果の挿入ソートが理想的である、マージソート、バブルソートよりも優れています。

一定の係数C1 C2マージソートより挿入ソート定数因子少ないので、c1n²c2log2 nは小規模でよりも少ないです。したがって、我々は、高速行に切り替えるために、特定のサイズのために、小規模な挿入ソートのソートを選択し、そうマージソートにすることができます。

 

ソートはまた、最適化された比較の数を減少させるためにバイナリサーチを挿入してもよいです。

 

おすすめ

転載: www.cnblogs.com/binhuang01/p/11367718.html