Выбор сортировки выбирает наименьшее число от [i] .. a [n-1] до i-й позиции. Для достижения этого вы можете изменить цикл for -
for (; i < n - 1; i++)
{
int temp_min = a[i];
int swapIndex=-1;
int j = i + 1;
for (; j < n; j++)
{
if (temp_min > a[j])
{
temp_min = a[j];
swapIndex = j;
}
}
if(swapIndex !=-1){
a[swapIndex] = a[i];
a[i] = temp_min;
}
}
Также вы можетеизмените
if (a[i] > a[j])
{
temp_min = j;
}
часть в вашем коде на это -
if (a[temp_min] > a[j])
{
temp_min = j;
}
это будет работать, но в этом случае -
int temp = a[temp_min];
a[temp_min] = a[i];
a[i] = temp;
Эта часть подкачки будетизбыточно для уже отсортированного массива, например {1,2,3,4}