qsort函数的模拟实现(冒泡排序)

目录

1.冒泡排序

2.qsort函数的模拟实现


1.冒泡排序

我们要用冒泡排序来实现qsort函数,首先我们需要知道什么是冒泡排序如下图给一段代码来将arr1数组进行升序排序

如图所示一共九个元素我们冒泡排序的思想就是通过两个相邻元素互相比较把较大的数一直往后放

也就是说我们每次排序只能把一个最大数放到数组最后面如今我们现在是一共是9个元素也就是说最多进行8次排序就可以得到一个升序的数组,接下来我们需要确定内部两个相邻元素的比较次数,也就是内循环的次数。当我们进行第一次排序时我们内部的比较是8次,当我们进行第二次排序时我们内部需要进行7次排序不难发现随着外部排序次数增加内部循环就减1;这样我们就可以确定了内部循环执行的次数。如上图假设sz为元素个数那么第一次外部循环的次数就是sz-1次,内部循环就是sz-1-0;第二次外部循环的次数就是sz-2,内部循环次数就是sz-1-1。接下来我们来进行代码的实现

以上就是冒泡的实现接下来我么来打印看是否进行了升序排序

这就是冒泡排序的实现。接下里我么通过这种思想来模拟qsort函数

2.qsort函数的模拟实现

如图qsort函数需要四个参数我们一个一个来进行解析首先第一个参数void * base 是一个指针在这里之所以是void *是因为以便于各种类型的数组进行排序,也就是说base这个指针接收的是我们要进行排序的数组,第二个参数size_nitems就是我们要进行排序数组的元素的字节个数为了方便后续我们按字节来进行交换从而来实现整个元素的交换;第三个参数就是size_t size就是我么要排序元素的个数,最后一个函数就是一个比较函数根据我们比较类型的不同而改变。这个比较函数是我们在调用时要自己写的。

上图就是qsort函数的实现

其中的cmp函数为

注意这个函数是我们自己写的是可以改变的这里是整形如果是字符就要变

Swap函数如下图

这个循环控制的就是字节交换的次数这样就很好的解决了整个元素的交换问题

以上就是我对qsort函数的理解如果喜欢支持一波啊!!!

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值