qsort用法
介绍
void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *));
base待排序数组首地址
nelem数组中待排序元素数量
width各元素的占用空间大小
fcmp指向函数的指针
- 功能:使用快速排序例程进行排序
- 时间复杂度:n*log(n)
自定义比较函数
int cmp(const void* a, const void *b)
如果比较函数返回大于0,a > b;返回0,a = b;返回小于0, a < b;
1、对于整数
int cmp(const void *a, const void *b)
{
return *(int*)a - *(int*)b;
}
对于其他简单类型也可以用相似的方法
举例
#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a, const void *b)
{
return *(int *)a - *(int *)b;
}
int main()
{
const int len = 7;
int index;
int arr[len] = { 2, 3, 1, 7, 5, 4, 6 };
printf("Before sort:\n");
for (index = 0; index < len; ++index)
{
printf("%d ", arr[index]);
}
printf("\n");
qsort(arr, len, sizeof(arr[0]), cmp);
printf("After sort:\n");
for (index = 0; index < len; ++index)
{
printf("%d ", arr[index]);
}
printf("\n");
return 0;
}
/*
输出:
Before sort:
2 3 1 7 5 4 6
After sort:
1 2 3 4 5 6 7
*/