曲阳有没有做网站里,制作网线,厦门做公司网站,深圳网站设计兴田德润简介前言
我们需先了解qsort函数
qsort函数详解#xff1a;http://t.csdnimg.cn/rTNv9
qsort函数可以排序多种数据类型#xff0c;很是神奇#xff0c;这是为什么#xff0c;我们在里模拟实现这样的功能
目录
1. qsort函数模拟实现
2. 我们使用bubble_sort函数排序整形数…前言
我们需先了解qsort函数
qsort函数详解http://t.csdnimg.cn/rTNv9
qsort函数可以排序多种数据类型很是神奇这是为什么我们在里模拟实现这样的功能
目录
1. qsort函数模拟实现
2. 我们使用bubble_sort函数排序整形数组
3. 再来排一下结构体 1. qsort函数模拟实现
qsort函数内部是用快速排序实现的在这里我们用冒泡排序实现
若还不清楚冒泡排序请看
冒泡排序http://t.csdnimg.cn/p0oHx
我们创建一个bubble_sort函数来模拟实现qsort函数
函数可以排多种数据类型参数绝对不能是int 类型因此我们如此创建
void*可以存放多种类型的元素首地址我们还要知道这个数组中有多少元素元素个数一定是正数size_t类型等同于unsigned int类型还要知道每个元素占多少个字节方便后面交换元素还有一个用于比较的函数地址
因此bubble_sort函数主体是这样的 if后使用我们传入的函数compar函数完成比较并返回正数负数或0若前面的大则交换调用swap函数。因为void*类型没法进行加减无法遍历数组我们又知道最小的数据类型char是一字节因此强制类型转换为char*类型此时传入的数组每个与元素的字节大小发挥了重要作用进行数组所有元素地址的计算传给swap函数
我们来看看swap函数 用char类型进行元素的交换
在这里举整形数组的例子相当于将要交换的相邻整形都变成4个char类型进行交换进行相对应的交换以width4进行循环后整体上将相邻的整形交换成功了。其他的数据类型同理。
因此qsort函数至此模拟实现完成
2. 我们使用bubble_sort函数排序整形数组 执行结果
排序成功
3. 再来排一下结构体 执行结果 排序成功
至此我们成功实现了qsort函数的功能我们的C语言功底又厚了一步。
感谢观看感谢指正。