個人的に私はシフト方式は、ソートソートヒルソート、挿入によってグループ化されていることを感じます
コメントは、前回の交換方法です。
そして、本当に速いのこの種
パッケージ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; } } } }