【发布时间】:2020-11-11 19:51:34
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b);
int main(void) {
int input;
scanf("%d", &input);
int* array = (int *) calloc(input, sizeof(int));
for (int i = 0; i < input; i++) {
scanf("%d", &array[i]);
}
qsort(array, sizeof(array)/sizeof(int), sizeof(int), compare);
for (int i = 0; i < input; i++) printf("%d ", array[i]);
return 0;
}
int compare(const void *a, const void *b)
{
int num1 = *(int *)a;
int num2 = *(int *)b;
if (num1 < num2) return -1;
if (num1 > num2) return 1;
return 0;
}
我仍然是 C 语言基础的学生。这可能是一个非常基本的问题,因为你还没有完全学会。 我正在尝试对动态数组进行排序。 我创建并排序了一个动态数组,但是查看结果,根本没有排序。有什么问题?
【问题讨论】:
-
array是一个指针。所以sizeof(array)是指针的大小。 -
你不需要像
int input包含要排序的元素数量这样的花哨的东西。