Как считать сравнения в selectionsort
?
терминах: когда операторы, которые вы выполняете, чтобы найти максимальное значение, 'истинны', тогда сравнивайте счет.
Значение, чтобы получить максимальноезначение хранится в первом элементе массива, а не в случайном порядке.
Я пытаюсь с изменением позиции счетчика переменной C - не работает новая переменная 'first', first = sort [MAX] вставка первой для цикла, -нет работы
#include <stdio.h>
int main() {
int sort[10000], i, n, MAX, temp, count;
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &sort[i]);
}
for (MAX = 0; MAX < n; MAX++)
for (i = MAX + 1; i < n; i++) {
if (sort[MAX] > sort[i]) {
count++;
temp = sort[MAX];
sort[MAX] = sort[i];
sort[i] = temp;
}
}
printf("%d ", count);
return 0;
}
Пример ввода
10
0 7 1 6 7 7 6 6 5 4
Пример вывода
17
РЕДАКТИРОВАТЬ : новый код:
#include <stdio.h>
#define SWAP(x, y, temp) ( (temp)=(x), (x)=(y), (y)=(temp) )
int count = 0;
void selection_sort(int list[], int n) {
int i, j, least, temp;
for (i = 0; i < n - 1; i++) {
least = i;
for (j = i + 1; j < n; j++) {
if (list[j] < list[least]) {
least = j;
count++;
}
}
SWAP(list[i], list[least], temp);
}
}
int main() {
int list[10000], i, n;
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &list[i]);
};
selection_sort(list, n);
printf("%d", count);
}
как насчет этого?почему этот код тоже не двигался?