ソートアルゴリズムアルゴリズム-shell(置換法)

個人的に私はシフト方式は、ソートソートヒルソート、挿入によってグループ化されていることを感じます

コメントは、前回の交換方法です。

そして、本当に速いのこの種

パッケージcom.ebiz.sort。

輸入java.text.SimpleDateFormatの。
輸入java.util.Date; 

/ ** 
 * @author YHJ 
 * @Create 2019年7月30日8:53 
 *シェル排序-交换法
 * / 
パブリック クラスシェル{ 

    公共 静的 ボイドメイン(文字列[]引数){ 

        int型 [] ARR = 新しい INT [80000を];
        以下のためにint型、I <80000は、I = 0 iは++ ){ 
            ARR [I] =(INT)(Math.random()* 800000 )。
        } 



        文字列S =新しい新規のSimpleDateFormat( "MM-DD-YYYYのHH:MM:SS")(フォーマット新しい新しい日付()); 
        のSystem.out.println( "選別前=" + S)

        のgetResult(ARR); 


        文字列L = 新しい新規のSimpleDateFormat ( "MM-DD-YYYYのHH:MM:SS")フォーマット(新しい新しい日付()); 
        のSystem.out.println( + "=ソート" L); 

        // Arrays.toStringのするSystem.out.println(( ARR)); 

        // 第2のパケット5/2 = 22基、ステップ2の各間隔は、二つの数字であり、
         // セット番号5、アウターループ、第四のグループ、8の合計CI
 //         のための(INT I = 2、I <arr.length; I ++){
 //             //は、ステップサイズの数を比較するために確立
 //            用(INT I = J-2、J> = 0; = J-2){
 //                 IF(ARR [J]> ARR [J + 2]){
 //                     INT ARR TEMP = [J + 2];
 / /                     ARR [J + 2] = ARR [J];
 //                     ARR [J] = TEMP;
 //                 }
 //             }
 // 
//         }
 //         するSystem.out.println(のArrays.toString(ARR)); 

        / / 3パケット2/2 = 1 ,,各区間グループ番号2つのステップは、1である
         @ グループ番号10、アウターループ、グループ9,9の合計
 //         ため(INT 1 = I; I <arr.length; I ++){
 //             // ステップの数を確立が比較される
 //             のための(INT 1-I = J; J> = 0; J- = 1){
//                 IF(ARR [J]> ARR [J + 1]){
 //                     INT ARR TEMP = [J + 1];
 //                     ARR [J + 1] = ARR [J];
 //                     ARR [J] = TEMP;
 //                 }
 //             }
 // 
//         }
         // するSystem.out.println(のArrays.toString(ARR)); 

    } 

    パブリック 静的 ボイドのgetResult(INT [] ARR){
 //         // 最初のパケット10 / 2 = 55基、2つの離間ステップの数、各グループ5、
 //         // 二つの数字、アウターループグループ1、5回の合計のセット
 //         (I 5 = int型のために、 I <arr.length; I ++){
 //             //ステップの数を確立することと比較する
 //             ため(INT 5-I = J; J> = 0; J- = 5){
 //                 IF(ARR [J]> ARRの[+ J. 5]){
 //                     INT ARR = TEMP [+ J. 5];
 //                     ARRの[+ J. 5] = ARR [J];
 //                     ARR [J] = TEMP;
 //                 }
 //             }
 // 
//         } 

        // コンポーネントの数を制御します
 //         のための(INT I = arr.length / 2; I> = 1; I / = 2){
 //             // 回数は、各制御比較が
 //             ため(INT I = J; J <arr.length、J ++ ){
 //                 // それぞれ、比較および交換
 @                (INT JI = K、K> = 0; = - K-I)用{
 //                     IF(ARR [K]> ARR [K + I]){
 //                         INT ARR TEMP = [K + I];
 //                         ARR [K + I]は= ARR [K];
 //                         ARR [K] = TEMP;
 //                     }
 //                 }
 // 
//             }
 // 
// 
//         } 

        // シェルソート-シフト法、即ち、挿入ソート
         // 制御パケット
        のためのint型 GAP = arr.length / 2; GAP> 0; GAP / = 2 ){
             // すべてのグループについては、ソートされる
            ためINTGAP = Iは、I <arr.length; I ++ ){
                 // 数をソートする
                のint J = I;
                 int型の TEMP = ARR [J];
                 // 比較
                しばらく(J-GAP> = 0 && TEMP <ARR [J - GAP]){ 
                    ARR [J] = ARR [J- GAP]; 
                    J - = GAP; 
                } 
                ARR [J] = TEMP; 
            } 

        } 


    } 

}

 

おすすめ

転載: www.cnblogs.com/jiushixihuandaqingtian/p/11313073.html