快速排序函数
适合任意类型数据的排序
格式:
void qsort ( void* base, //指向了需要排序的数组的第一个元素
size_t num, //排序元素的个数
size_t size, //一个元素的大小,单位是字节
int ( *cmp ) ( const void* p1 ,const void* p2 )
//函数指针类型——这个函数指针指向的数,能够比较base指向数组中的两个元素
//void* 可以接受任意数据,但不能改变或加减,如++
返回值:p1<p2 返回小于0的数字
p1=p2 返回 0
p1>p2 返回大于0的数字
#include<stdlib.h>
//qsort头文件
int cmp_int(const void* p1, const void* p2)
{
return (*(int*)p1 - *(int*)p2);
}
void print(int arr[], int sz)
{ int i=0;
for(i=0; i<sz; i++)
{
printf("%d ",arr[i]);
}
}
void test()
{
int arr[10] = {3,1,5,2,4,7,9,6,8,0};
int sz = sizeof(arr) / sizeof(arr[0]);
//默认升序
qsort(arr,sz,sizeof(arr[0]), cmp_int);
print(arr,sz);
}
int main()
{
test;
return 0;
}
打印结果为 0 1 2 3 4 5 6 7 8 9
strcmp专门用来比较字符串大小,返回类型跟qsort相同
在返回时直接return strcmp( p1 ,p2 );