このプログラムは主に私の教授によって処理されました。彼が私に残したのは、ファイルからスキャンされている配列に対して選択ソートを実行する配列を作成することでした。
ほぼ完璧に動作する教科書の助けを借りてコードを書きました。ただし、数値 0 が入力ファイルにない場合、出力の最初の 5 つの数値 (昇順でソートされるはず) がすべて 0 になるという点で、出力は間違っています。配列内の最後の 5 つの数値 (最大の 5 つ) も存在しません。
出力には、入力ファイルからの番号も元のソートされていない順序でリストされ、エラーは表示されません。数字はすべてあります。
メソッドの私のコード:
private static void selectionSort( int arr[], int cnt)
{
int index;
int minIndex;
int minValue;
for (cnt=0; cnt < (arr.length-1); cnt++)
{
minIndex = cnt;
minValue = arr[cnt];
for (index = cnt + 1; index< arr.length; index++)
{
if (arr[index] < minValue)
{
minValue = arr[index];
minIndex = index;
}
}
arr[minIndex] = arr[cnt];
arr[cnt] = minValue;
}
}
これは出力です:
元のランド 2: 75 62 110 144 108 146 121 119 61 164 170 34 78 41 89 84 74 132 156 160 94 55 76 97 48
ソート済みランド 2: 0 0 0 0 0 34 41 48 55 61 62 74 75 76 78 84 89 94 97 108 110 119 121 132 144
これが起こる原因となる間違いはありますか?