qsort简介和应用

qsort简介

首先说一下,qsort是编译器函数库自带的快速排序函数。下面我重点说一下它的用法函数参数和用法。

函数原型:
void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*));

函数参数:
1 待排序数组首地址
2 数组中待排序元素数量
3 各元素的占用空间大小
4 指向函数的指针,用于确定排序的顺序

其中base是排序的一个集合数组,num是这个数组元素的个数,width是一个元素的大小,comp是一个比较函数。

比如:对一个长为10的数组进行排序时,int a[10]; 那么base应为a,num应为 10,width应为 sizeof(int),comp函数随自己的命名。

qsort应用

使用qsort一个整形数组、浮点型数组、字符串数组。

这个问题就是考验对qsort中的几个参数的应用,重点还是那个函数指针,关于这一点,在上一篇文章,我已经说过了,这里不再做过多的重复,那么我们就从这个问题本身出发进一步了解qsort的用法吧!

//使用qsort一个整形数组、浮点型数组、字符串数组。

int cmp_int(const void * a,const void * b)
{
     return *(int *)a - *(int *)b;
}

int cmp_double(const void * a,const void * b)
{
    return *(double*)a > *(double*)b ? 1 : -1;
}

int cmp_string(const void * a,const void * b)
{
     return strcmp(* (char * *)a,*(char * *)b);
}

int main()
{
    int i=0;
    int num[]={12,32,65,54,12,15,658,5621,34,0};
    double dou[]={12.3,32.36,65.548,54.210,12.125,15.478,658.1,5621.2,34.3,0.456};
    char *str[]={"enter","number","size","begin","of","cat","case","program","certain","a"};
    qsort(num,10,sizeof(num[0]),cmp_int);
    qsort(dou,10,sizeof(dou[0]),cmp_double);
    qsort(str,10,sizeof(str[0]),cmp_string);
    for(i=0;i<10;i++)
    {
        printf("%d ",num[i]);

    }
    printf("\n");
    for(i=0;i<10;i++)
    {
        printf("%lf ",dou[i]);
        if(i==4)
        {
            printf("\n");
        }

    }
    printf("\n");
    for(i=0;i<10;i++)
    {
        printf("%s ",str[i]);

    }
    printf("\n");
    return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值