Подсчет перестановок при сортировке массива С
Всем доброго времени суток! У меня есть массив (пока создала из 4 чисел) сортирую методом прямого выбора. Нужно посчитать количество перестановок при сортировке. Возникла проблема. При сортировке рандомного массива, например: 11 17 24 10, все считается правильно, количество сравнений равно 6, а перестановок = 3, но при сортировке массива сформированного по убыванию: 24 17 11 10, то количество перестановок = 0. Почему так получается? вот пример кода:
//функция сортировки методом прямого выбора
void towardSort(int num[], int size)
{
int min, temp, c, m, b;
//количество пересылок и сравнений
m=0; c=0;
//проходимся по массиву
for (int i = 0; i < size; i++)
{
min = i; //запоминаем индекс первого элемента
//поиск минимального элемента, который поместим на место i
for (int j = i + 1; j < size; j++)
{
c++;// подсчет сравнений
if (num[j] < num[min]){
min = j;
m++; //подсчет перестановок
}
}
temp = num[i];
num[i] = num[min];
num[min] = temp;
printf("%d ",num[i]);
}
printf("\nКоличество сравнений: %d\n", c);
printf("Количество перестановок: %d\n", m);
}