引言:qsort是c语言中自带的库函数,需要包括头文件 #include <stdlib.h>。功能:实现任意数组的排序。
目录
1.qsort函数所需要的
qsort( void* base , size_t sz , size_t withd , int(*cmper)(void* p1, void* p2))
这里以一个整型数组为列 int arr[]={3,5,1,6,79,3,6,8,10};
qsort(arr , sz , sizeof(arr[0]) , my_cmper) 其中my_cmper是我们自己自定义的一个函数
如
void my_cmper(void* p1 , void* p2)
{
return *(int*)p1 - *(int*)p2;//注void* 类型的指针不能进行解引用操作
}
2.qsort 的自定义实现
int my_comper(void* p1, void* p2)
{
return (*(int*)p1-*(int*)p2);
}
void my_qsort(void* arr, size_t sz, size_t type, int(*my_comper)(void* p1, void* p2))
{
void my_exchange(char* p1, char* p2, size_t type);
int i = 0;
for (i = 0; i < sz - 1; i++)
{
int j = 0;
for (j = 0; j < sz - 1 - i; j++)
{
if ((my_comper((char*)arr + j * type, (char*)arr + ((j + 1) * type))>0))
my_exchange((char*)arr + j * type, (char*)arr + (j + 1) * type,type);
}
}
}
void my_exchange(char* p1, char* p2, size_t type)
{
int i = 0;
for (i = 1; i <= type; i++)
{
char tem = *p1;
*p1 = *p2;
*p2 = tem;
if (i == type)
return 0;
p1++;
p2++;
}
综上就是qsort函数的使用方式,以及如何实现自定义qsort函数。希望对你有所帮助。