Javaの一般的なソートアルゴリズム

●内側と外側の順序を並べ替え、並べ替え
●ソートはメモリ内で行われています
●外部ソートは、ディスク上で行われています

比較のサイズ、ソートと比較は、非ソート比較に分割されているか否かに応じてソート方法

次の一般的なアルゴリズムを定義します。

1。挿入ソート:基本的な操作の配列を決定することは、新しいを得ることが、すでにソート注文データへのデータの行を挿入することで、プラスに配列決定データの数INSERTアルゴリズムをソートすることは、少量のデータ、時間計算に適していますOの度合い(^ N- 2 )。安定したソート方法。基本的な考え方は、その挿入ソートです:各ステップは、レコードの並べ替えになります、そのキー値のサイズは、ファイルに挿入され、完全に最後に挿入されるまで、既に適切な位置をソート。

2  選択並び替え:選択ソート(選択ソート)簡単なソートアルゴリズムです。すべてのデータ要素を排出ソートするまでは、シーケンスの開始位置に格納された要素のデータ要素がソート最小(または最大)から選択されるたびに働きます。選択ソートは、不安定なソート方法です。

3 バブルソート。:バブルソート(バブルソート)、比較的単純なソートアルゴリズムのコンピュータサイエンスです。彼らは切り替え間違った順序でそれらを置く場合は繰り返し、列の数ソートする、二つの要素の比較を訪問しました。列の数はすでに完了してソートと言うことですスワップにはもはや必要は、存在しなくなるまで、列の仕事への訪問数が繰り返されます。大きな要素は、列の先頭に「フロート」の交換を通じて、ゆっくりとなるため、アルゴリズムの名前の由来です。

4 クイックソート。:クイックソート(クイックソート)は、バブルソートの改善です。基本的な考え方は次のとおりです。個別に速い二つの独立した部品は、すべてのデータの他の部分よりも、すべてのデータが小さくなるように一部、二部のためのデータのこの方法に分類されるデータを順序付けることによって旅ソート、プロセス全体をソートすると、順序付けられたシーケンスにデータ全体を達成するために、再帰的にすることができます。

5 。ソートマージ:マージソートマージ操作は非常に一般的なアプリケーションは、分割統治(分割統治)が使用され、効率的なソートアルゴリズムに基づいています。すなわち、各第1順序付けられたシーケンス、次いでセグメント間の配列を作るために命じ、複合配列は、完全に順序付けられたシーケンスを命じています。2は、ソートされたリストにマージした場合方向マージと呼ばれる、リストを命じました。

6。ヒルは、ソート:ソートヒル(シェルソート)挿入ソートです。また、狭いインクリメントソート、直接挿入ランキングアルゴリズムより効率的な改良版として知られています。非定常ソートソートアルゴリズムヒル。シェルソート単位で記録パケットを押すの主題である、直接挿入の使用ソート各ソートアルゴリズム、増分が徐々に減少すると、より多くのキーワードの各々が、インクリメントに減少するとき、ファイル全体がひとつのセットに分割され、アルゴリズムは終了します。

バブルソート

原則として2つの隣接する要素の比較、交換を終了する大きな値の要素。

考え順次隣り合うの数を比較し、番号が背面に多数の前方に配置されています。

すなわち、最初のパス:まず、第1の比較器と第二の数、小数点以下の場所の前に、多数のリリース後。最後の二つの数字は比較まで、多数のリリース前と後の第2の数と第3の数、小数の場所を比較するので、多数のリリース後、小数点の前に、続け。

公共 ボイド bubbleSort1(INT [] ARR){ //メソッドが高いよりも効率的である以下の
     // サイズ:配列のサイズ-温度:記録の一時的な中間値
    INTのサイズ= arr.length、TEMP;
     のためのINT I = 0 ; I <サイズ- 1。 ; I ++ ){
         ためのint型 K = I + 1、K <サイズ; K ++ ){
             IF(ARR [I] <ARR [K]){ // 2つの数の切り替え位置 
                TEMP = ARR [I]。
                ARR [I] = ARR [K]。
                ARR [K] = TEMP。
            }
        }
    }
}

公共 ボイド bubbleSort2(INT [] ARR){ //はO(n ^ 2)
    のintサイズ= arr.length、TEMP。
    以下のためにINT iが= 0 ; I <サイズ- 1 ; I ++ ){
         ためのint型のk = 0 ; K <サイズあり、k ++ ){
             場合(ARR [I] < ARR [K]){
                TEMP = ARR [I]。
                ARR [I] = ARR [K]。
                ARR [K] = TEMP。
            }
        }
    }
}

 

第二に、選択ソート

原理:各パスの最小要素を選択するには、一方の端部に、記録媒体から選別されます。

思考:第二の可動左選択の一端にレコードの最小数から第一の選択最小の記録、第2の位置に

すべてのシーケンシングが完了するまで下げます。

public void selectSort(int[] numbers) {
    int size = numbers.length, temp;
    for (int i = 0; i < size; i++) {
        int k = i;
        for (int j = size - 1; j > i; j--) {
            if (numbers[j] < numbers[k])
                k = j;//记下目前找到的最小值所在的位置
        }
        //在内层循环结束,也就是找到本轮循环的最小的数以后,再进行交换
        temp = numbers[i];
        numbers[i] = numbers[k];
        numbers[k] = temp;
    }
}

 

 

 

 

@内容源于网络 -非原创 -侵删请联系

おすすめ

転載: www.cnblogs.com/Dm920/p/12339769.html