qsort函数
作用
对指定数组排序
使用
生成结果1 ,2,3,4,5
qsort(arr,sz,sizeof(arr[0]),sort_int),qsort函数需要传入4个参数
第一个arr是首元素地址,第二个sz是元素个数,第三个sizeof(arr[0])是
数组的一个元素的大小,第4个是个函数,用来判断是否要交换元素
对函数的放回值有要求,p1大于p2返回1,等于返回0,小于返回-1
排序默认为升序,降序的话只需要交换放回值
qsort函数的模拟实现
可以使用冒泡排序的模板
具体内容为
函数传参
和qsort传参一样
然后函数里面是不知道参数类型的所以从更底端的方法进行数组的寻找和排序这样就不许哟知道数据类型也能够正确排序,且也能对各种类型进行排序,数组,字符串,结构体
int(*cmp)这是个函数变量指针返回值为整形,
将首元素地址base强制装换为char类型的指针,这样每次加一的话
指针地址也只是加一个字节,width是单个数据的大小,base+width*j也即是arr[j]这样也就完成了每个数据的实现 ,然后进入函数
若p1大于p2返回1,等于返回0,小于放回-1,用这个判断是否要进行交换数据
若返回值为1,进入Swap函数
传参也和上面的一样
使用char类型的指针接收,目的也是为个每个地址都能遍历到
传入的p1为地址也就是首元素的首个字节的地址,char类型的指针加一也就是地址加一这样进行交换,进行width次,就把这俩个元素的全部字节交换,也即是将元素的值交换。
这样下来就实现了数组的一次排序,qsort函数的模拟也就是这样实现的
最后源代码附上
加油奥力给(๑•̀ㅂ•́)و✧