排序算法有很多,搜索算法也很多。c语言提供了qsort和bsearch这两个库函数,今天学习了一下,感觉很实用。
下面是测试代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int cmp(const void*,const void*);
int main()
{
int s[]={3,4,5,6,2,1};
/*参数 1.待排序数组首地址
2.数组中待排序元素个数
3.待排序元素大小
4.比较函数*/
qsort(s,sizeof(s)/sizeof(s[0]),sizeof(s[0]),cmp);
int i;
for(i=0;i<6;i++)
printf("%d ",s[i]);
printf("\n");
srand(time(0));
int key = rand()%10+1;
/*参数 1.要查找的元素地址
2.待查找的数组首地址
3.待查找元素个数
4.待查找的元素大小
5.比较函数*/
//注意 bsearch使用前,要对s进行以cmp为比较函数的qsort
if(bsearch(&key,s,sizeof(s)/sizeof(s[0]),sizeof(s[0]),cmp)!=NULL)
printf("YES\n");
else
printf("NO\n");
return 0;
}
/*返回值<0 a排在b前面
返回值>0 a排在b后面*/
int cmp(const void* a,const void*b)
{
return *(int*)a - *(int*)b;
}