#include <stdio.h>
#include <stdlib.h> //for qsort
#define NUM 40 //数组的个数
//伪随机生成数组
void fill_array(double ar[],int n)
{
for (int index =0; index<n; index++) {
ar[index] = (double)rand()/((double)rand()+0.1);
}
}
//打印数组
void show_array(double ar[],int n)
{
int index = 0;
for (index=0; index<n; index++) {
printf("%9.4f ",ar[index]);//每个数占9个 保留4位小数
if(index%6==5)//每行6个
{
putchar('\n');
}
}
if (index % 6 !=0) {//最后输出的时候换行
putchar('\n');
}
}
//qsort的比较函数
int mycomp(const void *p1,const void *p2)
{
//转换w成具体的类型对象
const double *a1 = (const double*)p1;
const double *a2 = (const double*)p2;
if (*a1<*a2)
return -1;
else if(*a1==*a2)
return 0;
else
return 1;
}
int main()
{
double vals[NUM];
fill_array(vals, NUM);
puts("Random list:");
show_array(vals, NUM);
//arg1:数组名
//arg2:需要排序的个数
//arg3:由于第一个参数是void*的所以要传入类型的大小
//arg4:比较两个对象的大小
qsort(vals, NUM, sizeof(double), mycomp);
puts("sorted:");
show_array(vals, NUM);
return 0;
}
Result:
原文:https://www.cnblogs.com/tailiang/p/12267494.html