【新手C语言】7.基础搜索法
搜索
线性搜索
最简单、最基础、最粗暴的搜索:遍历所有数据,检索目标
int searcher(int key , int a[] , int len){
//这里附带说明一下,由于C语言的函数的关系,我们最好还是把数组长度直接传进来
int ret = -1 ;
for (int i =0 ; i <len ; i++){
if (key == a[i]){
ret = i ;
break ;
}
}
return ret ;
}
这个方法会查找数组中的某个数,找到了就会输出它的位置
二分搜索
不断对半分的搜索方法
int search(int key , int a[] , int len){
int left = 0 ;
int right = len -1 ;
//定义好边缘的那两个点
int ret = -1 ;
while(right > left){
int mid = (left+right)/2 ;
if(a[mid] == k){
ret = mid ;
break ;
//如果找到了就设置ret为这个值并且返回
}else if (a[mid]>k){
right = mid -1 ;
}else{
left = mid +1 ;
}
}
return ret ;
}
不过,二分搜索运用的地方是一个已经排序好的数组 , 但是它的效率显然高于普通遍历