コードで選択ソートを使用し、ソート後に配列のインデックスを返そうとしていますが、プログラムで必要な結果が得られません。
int kick=0;
int[] array = new int[10] { 100, 50, 20, 40, 10, 60, 80, 70, 90, 30 };
int[] index = new int[array.Length];
Console.WriteLine("The array before Selection Sort is: ");
for (int i = 0; i < array.Length; i++)
{
Console.WriteLine("array[" + i + "] = " + array[i]);
}
int tmp, min_key;
for (int j = 0; j < array.Length - 1; j++)
{
min_key = j;
for (int k = j+1 ; k < array.Length; k++)
{
if (array[k] < array[min_key])
{
min_key = k;
}
}
int min = min_key;
index[kick] = min;
tmp = array[min_key];
array[min_key] = array[j];
array[j] = tmp;
kick = kick + 1;
}
Console.WriteLine("The array index after Selection Sort is: ");
for (int i = 0; i < index.Length; i++)
{
Console.WriteLine("index[" + i + "] = " + index[i]);
}
Console.ReadLine();
私が得ている出力は
4
2
9
3
9
5
7
7
8
0
私の質問は、インデックスが繰り返されるのはなぜですか? なぜ9と7が再び来るのですか?二度と欲しくない。
コンソール アプリケーションで私のコードを実行および実行できます。