函数qsort()和bsearch()的用法
使用qsort()排庿 并 用 bsearch()濜索是一个比较常用的组忈,使用方便快濷。
qsort 的函数原型是void __cdecl qsort ( void *base, size_t num, size_t width, int (__cdecl *comp)(const void *, const void* ) )
其中base是排庿的一个集忈数组,num是这个数组元素的个数,width是一个元素的大尿,comp是一个比较函数。
比如:对一个长为1000的数组进行排庿时,int a[1000]; 那么base应为a,num应为 1000,width应为 sizeof(int),comp函数隿自己的命忿。
qsort(a,1000,sizeof(int ),comp);
其中comp函数应写为:
int comp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
是对一个二维数组的进行排庿:
int a[1000][2]; 其中按照a[i][0]的大尿进行一个整体的排庿,其中a[i][1]必须和a[i][0]一起移动交濢。
qsort(a,1000,sizeof(int)*2,comp);
int comp(const void *a,const void *b)
{
return ((int *)a)[0]-((int *)b)[0];
}
对字符串进行一个排庿:
char a[1000][20];
qsort(a,1000,sizeof(char)*20,comp);
int comp(const void *a,const void *b
{
return strcmp((char *)a,(char *)b);
}
对一个结构体进行排庿:
typedef struct str
{
char str1[11];
char str2[11];
}str,*stri;
str strin[100001]={0};
int compare(const void *a,const void *b)
{
return strcmp( ((str*)a)->str2 , ((str*)b)->str2 );
}
qsort(strin,total,sizeof(str),compare);
而关于bsearch() ,他和qsort的用法基本一样,忪是他的返回值是一个指忑找到的忕使元素的一个指针,忦外他多了一个忂数,是一个指忑查找元素的一个指针。
比如:从上鿢例孿中的结构体数组中查找一个字符串: