#include<stdio.h>
#include<stdlib.h>
//升序排列 *(int*)b-*(int*)a为降序
int compare(const void *a,const void *b)
{
return *(int*)a-*(int*)b;
}
void Display(int number[],int len)
{
for(int i=0;i<len;i++)
{
printf("%d ",number[i]);
}
printf("\n");
}
int main()
{
int *p,key;
int number[]={12,34,56,78,3,6,89,90,123,60};
int len=sizeof(number)/sizeof(number[0]);
printf("排序前数组为:\n");
Display(number,len);
/*number指待排序数组的首地址
len指排序元素的数量
sizeof(int)指各元素所占的空间
compar指向函数,用于确定排序的顺序*/
qsort(number,len,sizeof(int),compare);
printf("排序后数组为:\n");
Display(number,len);
/*bsearch()函数经常和qsort函数联合使用,因为使用bsearch()
必须是有序表,所以,在和qsort()函数联合使用时,排序规则要
和qsort中compare所指向比较子函数的规则相同,如果查找成功则返回数
组中匹配的元素的地址,反之则返回为空。*/
printf("请输入要查找的值:");
scanf("%d",&key);
p=(int*)bsearch(&key,number,len,sizeof(int),compare);
p != NULL ? puts("found!") : puts("not found!");
for(int i=0;i<len;i++)
{
if((number+i)==p)
printf("第%d位\n",i+1);
}
return 0;
}
qsort()和bsearch()函数的使用实例与解析
最新推荐文章于 2021-08-31 17:17:39 发布