1
私は現在データ構造とアルゴリズムコースを取っていますが、演習では3つのforループを使ってシェーカーソートアルゴリズムを実装しています。コードスニペットには私が修正したいくつかのエラーが含まれていましたが、なぜこれを取得するのか分かりません。 サイズ12の配列を初期化すると、最初のインデックス値はソートされません。理由を理解する。シェーカーソートまたは双方向バブルソート
- 要素0:53
- 要素1:27
- 要素2:28
- エレメント3
// Method which will sort an array by using the shakersort algorithm public void shakerSort(int[] array) { for (int p = 1; p < array.length-1; p++) { for (int i = p-1; i < array.length-2; i++) { if (array[i] > array[i+1]) { super.swap(array, i, i+1); } } for (int i = array.length-p-1; i > 0; i--) { if (array[i] > array[i+1]) { super.swap(array, i, i+1); } } }
私の結果はこれだった:はここに私のコードです:53
- エレメント4:90
- 要素5:72
- 要素6:80
- 要素7:67
- 素子8:2
- 素子9:33
- 素子10:45
- 素子11:91
- ソート後...
- 要素0:27
- 要素1:2
- 要素2:28
- 要素3:33
- 要素4:45
- 要素5:53
- 要素6:53
- 要素7:67
- 素子8:72
- 素子9:80
- 素子10:90
- 素子11:91
お時間をありがとうとあなたのコードはまったくarray[0]
を使用しないように私には思える
-Daniel
ご回答のおかげで、私はそれを動作させることができました。はい、これはシェーカー/カクテルです。実装では、do-whileおよびBoolean変数ではなく、ネストされたforループを使用します。 – Daniel