对于还没学过更好的排序算法的初学者来说,qsort函数可以更快的帮助我们对一个数组进行排序。
函数的声明:void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))
参数:
- base -- 指向要排序的数组的第一个元素的指针。
- nitems -- 由 base 指向的数组中元素的个数。
- size -- 数组中每个元素的大小,以字节为单位。
- compar -- 用来比较两个元素的函数
参考代码:
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a, const void *b)
{
return abs(*(int*)b) - abs(*(int*)a);
}
int main(void)
{
int n, i;
while (scanf("%d", &n), n)
{
int x[n];
for (i = 0 ; i < n ; i++)
scanf("%d", &x[i]);
qsort(x, n, sizeof(int), cmp);
for (i = 0 ; i < n ; i++)
printf("%d%c", x[i], (i != n - 1 ? ' ' : '\n'));
}
return 0;
}
效果展示: