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


目录
相关文章
|
8月前
|
编译器 C语言
库函数qsort的使用及利用冒泡排序模拟实现qsort
库函数qsort的使用及利用冒泡排序模拟实现qsort
|
算法 C语言
my_qsort,你值得拥有.
my_qsort,你值得拥有.
36 0
|
存储 安全 编译器
【C语言】memcpy,memmove,memcmp,memset函数详解
【C语言】memcpy,memmove,memcmp,memset函数详解
【C语言】memcpy,memmove,memcmp,memset函数详解
memmove的实现与使用
memmove的实现与使用
105 0
|
8月前
浅学指针(4)函数指针数组和qsort的使用
浅学指针(4)函数指针数组和qsort的使用
|
存储 算法 测试技术
深入解析 qsort 函数(下),用冒泡排序模拟实现 qsort 函数
深入解析 qsort 函数(下),用冒泡排序模拟实现 qsort 函数
55 0
|
C语言
妙用指针实现qsort
妙用指针实现qsort
83 0
|
编译器 C语言
你应该知道的C语言干货(5)(memset,memcpy,memmove,memcmp)
我们知道包含string.h头文件后,就可以使用memset,memcpy,memmove,memcmp这些库函数,接下来让我们了解他们。
99 0

热门文章

最新文章