qsort

简介: qsort

qsort是一个库函数,其头文件为stdlib.h,如下所示:


int cmp_int (const void*e1, const void*e2)


{


return (*(int*)e1 - *(int*)e2);(排序为整数时)


//return  (*(char*)e1 - *(char*)e2);(排序为字符时)


.....


(排序什么类型的数据则改为相应的类型)


}


void myqsort(void* base, size_t nums, size_t size, int(*cmp)(const void*e1, const void*e2))


{


int i = 0;

   for (i = 0; i < nums - 1; i++)

   {

       int j = 0;

       for (j = 0; j < nums-1-i; j++)

       {

           if (cmp_int((char*)base + j * size, (char*)base + (j + 1) * size)>0)

           {

               swap((char*)base + j * size, (char*)base + (j + 1) * size, size);

           }

       }


   }


}


base为待排序的起始位置,nums为数组的元素个数,size为该数组一个元素的字节大小。


cmp为一个比较函数(qsort要求使用者自定义一个比较函数),比较e1和e2的大小,


若e1大于e2,则函数返回一个大于一个零的数,


若e1等于e2,则函数返回一个等于一个零的数


若e1小于e2,则函数返回一个小于一个零的数。


如果cmp_int函数中是“>”号即是按从小到大排序;


反之则按从大到小。


其中的swap函数是交换e1和e2位置的。


附加一图:



f7ffed98e09a4404b72623aa227728a4.png


目录
相关文章
|
6月前
|
编译器 C语言
库函数qsort的使用及利用冒泡排序模拟实现qsort
库函数qsort的使用及利用冒泡排序模拟实现qsort
|
算法 C语言
my_qsort,你值得拥有.
my_qsort,你值得拥有.
31 0
|
11月前
|
容器
sort函数
sort函数
|
搜索推荐 C语言
qsort函数的讲解
qsort函数的讲解
57 0
|
存储 算法 测试技术
深入解析 qsort 函数(下),用冒泡排序模拟实现 qsort 函数
深入解析 qsort 函数(下),用冒泡排序模拟实现 qsort 函数
47 0
|
C语言
实现qsort函数
qsort函数是C语言中快速排序的一个函数,不会的可以去http://t.csdn.cn/TP8cv看看这个函数的用法,现在我们看看自己怎么实现这个函数
|
搜索推荐
qsort函数
我们以前学习过的一些排序算法,如冒泡、希尔、快排等等,它们速度有快有满,但是这些排序都只能排序一种类型的变量,如果想排序另一种变量就需要另写一个排序, 那么有没有什么排序是“万能的”呢,什么类型数据都能排的呢?
104 0
|
算法
结构体排序
结构体排序