分析は、ループの最後の3を見て、コメントアウトを見ることができます
パッケージcom.ebiz.sort; インポートjava.util.Arrays; / ** * @author YHJ * @Create 2019年7月30日8時53分 *シェルの並べ替え-為替 * / パブリック クラスシェル{ 公共の 静的な 無効メイン(文字列[]引数){ INT [] ARR = {8,9,1,7,2,3,5,4,6 }; のgetResult(ARR); // のSystem.out.println(Arrays.toStringの(ARR)) ; // 第2のパケット5/2 = 22基、ステップ2の各間隔は、二つの数字である // グループ5、アウターループ、第四のグループ、8回の合計の数 // {ため(I ++は; Iは<arr.length I = 2 INT) // //は、ステップサイズの数を比較するために確立 // 用(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基、ステップ5 2つの数の各間隔 // // 二つの数字、アウターループグループ1、5回の合計のセット // のための(I = 5 int型、Iは< arr.length;私は++){ // //ステップの数を確立することと比較する // ため(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 J = I; J <arr.length; J ++ ){ // 各比較交換 以下のために(int型 K = JIは、K> = 0; K- = I){ 場合(ARR [K]> [K + ARR I]){ int型の一時=のARR [K + I]; ARR [K + I] =のARR [K]。 ARR [K] = TEMP。 } } } } } }
完璧であるために...