C语言实现二分搜索
left指示搜索范围开头的元素,right指示末尾元素的后一个元素。二分搜索流程如下图所示。
二分搜多C语言实现
#include<stdio.h>
int A[1000000], n;
int binarySearch(int key){
int left = 0;
int right = n;
int mid;
while(left < right){
mid = (left + right) / 2;
if(key == A[mid]) return 1;
if(key > A[mid]) left = mid + 1;
else if(key < A[mid]) right = mid;
}
return 0;
}
int main(){
int i, q, k, sum = 0;
scanf("%d", &n);
for(i = 0; i < n; i++){
scanf("%d", &A[i]);
}
scanf("%d", &q);
for(i = 0; i < q; i++){
scanf("%d", &k);
if(binarySearch(k)) sum++;
}
printf("%d\n", sum);
}