首页 > 其他 > 详细

[C]qsort函数

时间:2020-02-06 11:42:19      阅读:55      评论:0      收藏:0      [点我收藏+]
#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:
技术分享图片

[C]qsort函数

原文:https://www.cnblogs.com/tailiang/p/12267494.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!