一般的な5つのカテゴリを注文します

配列を初期化します。

//アレイ、参照型のパッケージ・タイプを初期化する整数
民間最終静的整数[]配列= {2 ,. 4 ,. 6 ,. 1 ,. 3 ,. 8 ,. 7、10 ,. 9 ,. 5}。 

(1)バブルソートの基本的な考え方:これまでに交換する必要がないまでによるソートする列の数を複製し、二つの要素の比較は、隣接する二つの要素が、交換されます。

  a)は、隣接する要素を比較します。最初は、二以上である場合には、それらの2が交換され、

  b)は、隣接する要素、第一の対の開始から終了までの最後のペアの各ペアに対して同じ作業用。この時点で、それは最後の要素の最大数であるべきです。

  C)最後を除いて、すべての要素のための上記の手順を繰り返します。

  数字の組を比較する必要がなくなるまでD)、より少ない及びより少ない要素の各反復のための上記の手順を続行します。

/ ** 
     *冒泡排序
     * / 
    パブリック静的な無効バブルソート(){ 
        int型の温度; 
        int型の変更= 1; //降低排序无用次数
        ため(INT i = 0; iは<Array.lengthと- 1 == 1 &&変化; iは++){ 
            変化= 0。
            用(INT J = 0; J <Array.lengthと- 、I - 1、J ++){ 
                IF(配列[J]>配列[J + 1]){ 
                    TEMP =配列[J]。
                    アレイ[J] =配列[J + 1]。
                    アレイ[J + 1] = TEMP。
                    変更= 1; 
                } 
            } 
        } 
    }

(2)種類の基本的な考え方を選択:ソートする各データ要素は、最小(または最大)から選択される元素の、唯一の配列の開始位置に、すべてのデータ要素をソートするまで行持続!

/ ** 
     *简答选择排序
     * / 
    パブリック静的な無効changeSort(){ 
        int型の温度; 
        以下のために(INT i = 0; iはArray.lengthと< - 1; iは++){ 
            ための(int型J = I + 1、J <Array.lengthと; J ++){ 
                IF(配列[I]>配列[J]){ 
                    TEMP =配列[i]は、
                    配列[I] =配列[J]。
                    アレイ[J] = TEMP。
                } 
            } 
        } 
    }

(3)挿入ソートの基本的な考え方:各ステップがあることが記録の種類を、完全にまで挿入されるまで、アレイの行が既にソート場所に挿入されたキー値の大きさに応じて!

/ ** 
     *插入排序
     * / 
    パブリック静的な無効insertSort(){ 
        int型J、温度; 
        以下のために(; iは<Array.lengthと、I = 1 int型私は++){ 
            TEMPを=配列[i]は、
            用(J = - 1; J> = 0 &&配列[j]> TEMP; j--){ 
                アレイ[J + 1] =配列[J]。
            } 
            アレイ[J + 1] = TEMP。
        } 
    }

基本的な考え方(4)ウェイ・マージソート:除算の使用と一つだけ、これまでの配列要素まで分割されたグループの連結その配列を分割するアルゴリズムを征服!

/ ** 
     *二路归并排序
     * @paramアレイ
     * @param左
     * @param右
     * / 
    パブリック静的ボイドマージ{(整数[]配列、左INTは、右INT) 左==右){場合に
            返します。
        } 
        INT半ば=(左+右)/ 2。
        マージ(アレイ、左、中)。//左边递归求解
        マージソート(配列、ミッド+ 1、右)。//右边递归求解

        のint [] tempArray =新しいint型[Array.lengthと]。
        私は左= int型。
        int型J =ミッド+ 1; 
        int型K =左。
        一方、(I <=ミッド|| jの<=右){  
            存在する場合、右間隔//比較、または左および間隔値右の間隔値よりも小さいです
            IF(J>右||(I <=ミッド&&配列[I] <配列[J])){
                tempArray [K ++] =配列[ I ++]; // 一時配列に左セクションの値
            }他{ 
                tempArray [K ++] =配列[J ++];右間隔値//の存在下、および左部よりも小さな値、一時的なアレイは、内
            } 
        } 

        //一時配列の値は、元の配列にコピーされている
        ため(左= K; K <=右; K ++){ 
            配列[K] = tempArray [K]; 
        } 
    }

(5)クイックソートの基本的な考え方:分割と別二つの部分、データの他の部分よりも小さいデータの全ての部分に分類するデータを順序付けることにより、アルゴリズム旅行を克服し、このようにこれをクイックソートのためのデータの一部、全体のソート処理は再帰的であり、その順序付けられたシーケンスをプログラム全体のデータに到達することができます!

/ ** 
     *クイックソート
     * @paramアレイ
     * @param左
     * @param右
     * / 
    パブリック静的ボイドクイック(整数[]配列、左INT、右INT){ 
        左の場合であれば(左> =右) {//> =命令のグループを組織する権利が完了した
            リターン; 
        } 
        ;左I = int型
        INT J =右; 
        int型のTEMP =配列[左]; //は、格納された値のハブを見つけるために
        、一方(I <jの){ 
            ながら(I <jのアレイ&& [J]> = TEMP){ 
                J ,; 
            } 
            アレイ[I] =配列[J]、
            一方が(私は<J &&配列[I] <= TEMP){ 
                私は++; 
            }
            アレイ[J] =配列[I];
        } 
        配列[I] = TEMP、

        クイックソート(アレイ、左、I); //再帰左
        クイック(アレイ、I + 1、権利); // 右再帰します
    }
    

(6)出力コード:

  パブリック静的無効メイン(文字列[] args){ 
// ManySort.bubbleSort()。
// changeSort(); 
// insertSort(); 
//マージ(アレイ、0、Array.lengthと- 1)。
        クイックソート(アレイ、0、Array.lengthと- 1)。
        以下のために(INT i = 0; I <Array.lengthと; I ++){ 
            System.out.print(配列[I] + "「)。
        } 
        のSystem.out.println(); 
    }

  リトル進歩毎日、大企業に苦しんで、私たちは前進し続けます!

 

おすすめ

転載: www.cnblogs.com/blogtech/p/11109559.html