Поскольку MinNumberIndex(i)
возвращает индекс наименьшего элемента в диапазоне [i,ItemCount-1]
, а ваша альтернативная версия кода изменяет этот диапазон в массиве между двумя вызовами на MinNumberIndex()
, вы не меняете местами элементы.
Ваш альтернативный цикл эквивалентен:
for (i=0;i<10;i++)
{
temp = numbers[i];
numbers[i] = numbers[MinNumberIndex(i)];
numbers[i] = temp;
}
Немного подробнее, когда эта строка кода выполняется в цикле for
:
numbers[i] = numbers[MinNumberIndex(i)];
Это делает numbers[i]
минимумом в диапазоне массива, с которым вы имеете дело в данный момент, поэтому при следующем вызове MinNumberIndex(i)
будет возвращено i
.И
numbers[i] = temp;
просто восстановит массив в то же состояние, в котором он находился в верхней части цикла.