45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:使用qsort的方法

使用qsort的方法

2016-09-05 07:31:33 来源:www.45fan.com 【

使用qsort的方法

qsort使用
qsort函数是ANSIC标准中提供的,其声明在stdlib.h文件中,具体内容为:

voidqsort(void*base,size_tnelem,size_twidth,int(*fcmp)(constvoid*,constvoid*));

其中:
*base为要排序的数组
nelem为要排序数组的长度
width为数组元素的大小(以字节为单位)
(*fcmp)(constvoid*a,constvoid*b)为判断大小函数的指针,这个函数需要程序员自己定义,
如果a>b,函数返回1;a<b,函数返回-1;a=b,函数返回0

例:字符串排序
#i nclude<stdio.h>
#i nclude<stdlib.h>
#i nclude<string.h>

charlist[5][4]={"cat","car","cab","cap","can"};
intsort_function(constvoid*a,constvoid*b);
intmain(void)
{
intx;
qsort((void*)list,5,sizeof(list[0]),sort_function);
for(x=0;x<5;x++)
printf("%s//n",list[x]);
return0;
}

intsort_function(constvoid*a,constvoid*b)
{
return(strcmp((char*)a,(char*)b));
}


例:数组排序

#i nclude<stdio.h>
#i nclude<stdlib.h>

intlist[5]={7,5,9,2,6};
intsort_function(constvoid*a,constvoid*b);

intmain(void)
{
intx;
qsort((void*)list,5,sizeof(int),sort_function);
for(x=0;x<5;x++)
printf("%d//n",list[x]);
return0;
}

intsort_function(constvoid*a,constvoid*b)
{
if(*(int*)a>*(int*)b)
return1;
elseif(*(int*)a<*(int*)b)
return-1;
else
return0;
}

本文地址:http://www.45fan.com/a/question/72490.html
Tags: 函数 qsort ANSIC
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部