C语言实现冒泡排序排序所有类型的数据

冒泡排序整型

        使用冒泡排序完成所有类型的数据排序之前,先学习一下快速排序(qsort)函数,为什么这个函数能够排序所有类型的数据。

快速排序(qsort)函数

        MSDN查看函数的结构以及函数具体使用情况。

768caee805c642a6bed01bf2d5dc3a9c.png

 559b9b2f24944b0f9ef3579d73fdfeb0.png

        返回类型:void类型。参数:void*、两个无符号的整型、函数指针。函数指针的返回类型是int类型,参数是两个const void*。qsort函数的头文件是stdlib.h。

        base:待排序数据的起始位置。

        num:数组的元素个数。

        width:一个元素的字节大小。

        compare:比较函数(使用者根据实际情况实现一个比较函数)。

        elem1、elem2:待比较两个元素的地址。

qsort函数的设计

        void* base,为了qsort能够排序任何类型的数据,要接收任何类型的数据,只能用void*指针来接收。

        size_t num,排序需要知道要排序的元素有多少个。

        size_t width,接收的指针是void*指针,void*无法知道指向的对象数据占多少个字节,该指针无法进行解引用,不清楚访问下一个元素的时候需要跳过多少字节的大小,所以需要知道每个元素的大小,通过num和width就能知道全部元素已经元素的大小进行排序。

        int (*cmpare)(const void* elem1, const void* elem2),设计qsort的人,并不知道使用者需要排序的数据类型,不同的类型的数据比较的方法是有所差异的,就需要使用者来实现比较函数,这个比较函数是回调函数,将函数的地址传给qsort函数,qsort使用函数指针调用比较函数,完成数据的比较。比较函数的参数为const void*类型,不知道排序的数据类型,用void*接收;为了避免错误操作,修改内容,用const修饰指针,指针不能通过*解引用修改内容。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值