Я пытаюсь сортировать массив типа double в C, но я не получаю ожидаемый результат. Кажется, что сортировка адресов памяти вместо фактических значений. Я попытался изменить vairables на (* grade [i]), но затем я получаю «недопустимый аргумент типа unary *». Вот скрипп кода, о котором идет речь.Сортировка массива double в C
void sortGrade(double grade[], int n){
int i, j, swapped;
double temp;
for (i = 0; i < n; ++i)
{
for (j = i + 1; j < n; ++j)
{
if (grade[i] < grade[j])
{
temp = grade[i];
grade[i] = grade[j];
grade[j] = temp;
}//end if
}//end inner for
}//end outer for
printf("After sort:\nGrade\n");
for (i = 0; i < n; ++i)
{
printf("%d\n", grade[i]);
}//end for
}//end sortGrade
Любая помощь была бы принята с благодарностью. Полное раскрытие информации, это для школы, но задание уже представлено, теперь я просто пытаюсь выяснить, как на самом деле заставить его работать.
Ваш алгоритм сортировки в порядке. Ошибка при печати: используйте '% f' или'% g' для печати чисел с плавающей запятой. –
Трудно сказать, если вы не сообщите нам, каков ожидаемый результат. Очевидно, что вы должны включить предупреждения в свой компилятор, поэтому нам не нужен совет M Oehms. С учетом этого он будет отсортирован, но, возможно, не так, как вы ожидаете. – gnasher729
И если вы отсортировали адреса памяти, то, очевидно, порядок элементов не изменился бы. Элементы массива _allways_ отсортированы по адресу памяти. – gnasher729