思路:
二分法查找在有序数组中查找某一特定元素的搜索算法
输入一个待查找值c,将其与数组中中间值比较
若c大于该中间值,则在右边范围中查找,并且左边界mid-1;若c小于该中间值,则在左范围中查找,并且右边界mid+1
直到查找的值为数组中间值时,则该数组中间值为查找的值
#include<stdio.h>
int main(){
int n,i,m,c;
int left=0,right=n-1;//确定数组边界的最左值和最右值
int mid=0;//数组基准数
scanf("%d %d",&n,&m);
int a[n];
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<m;i++){
scanf("%d",&c); //输入m个待查找的数
while(left<=right){
if(c>a[mid]){//若查找的数大于s[mid]
left=mid+1;//让数组左边界为mid+1
mid=(left+right)/2;
}
else if(c<a[mid]){//若查找的数小于s[mid]
right=mid-1;//让右边界为mid-1
mid=(left+right)/2;
}
else{ //相等时,比较结束
printf("%d",a[mid]);
break;
}
}
}
return 0;
}