qsort
头文件:stdlib.h
用 法: void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));
2 数组中待排序元素数量
3 各元素的占用空间大小
如何根据函数的指针的返回值,来确定排列顺序呢???
比如:
对一个长为10的
数组
进行排序时,int arr[10]={5,0,3,8,1,6,7,4,9,2};那么base应为arr,num应为 10,width应为 sizeof(int),comp函数随自己的命名。
qsort(a,10,sizeof(int),comp);
comp为函数指针的编写,列:
int comp(const void* a,const void *b)
{
if(*((int*)a)>*((int*)b)) return 1;//返回值为正数,则交换,即为升序排列 ,0123456789
else if(*((int*)a)<*((int*)b)) return -1;//返回值为负数,则不交换,按降序排列,9876543210
else if(*((int*)a)==*((int*)b)) return 0;//返回值为零,也不交换,
else if(*((int*)a)<*((int*)b)) return -1;//返回值为负数,则不交换,按降序排列,9876543210
else if(*((int*)a)==*((int*)b)) return 0;//返回值为零,也不交换,
}
int main(void)
{
int arr[10]={5,0,3,8,1,6,7,4,9,2};
qsort(arr,10,sizeof(int),comp);
for(int i=0;i<10;i++)
{
printf("%d.",arr[i]);
}
return 0;
}