在序列按照递增或者递减顺序排列时,我们输入下标left和上标right,每次比较中间值A[mid], ( mid=(left+right)/2),
如果A[mid]== x ,return mid;
如果A[mid]>x,left=mid+1;
如果A[mid]<x,right = mid-1;
如果left<right时,返回-1,代表序列中没有该元素。
#include<cstdio>
//二分查找
//A为严格单增的序列,left和right 为查找的区间,x为查找的数字
//找到则返回下标,否则返回-1
int binarySearch(int A[],int left,int right,int x){
int mid;
while(left<=right){
mid = (left+right)/2;
if(A[mid] == x) return mid;
else if(A[mid]>x){
right = mid - 1;
}
else{
left = mid + 1;
}
}
return -1;
}
int main(){
int A[10] = {1, 2 , 32 , 35 , 62 ,71, 88, 91, 100, 120};
printf("%d \n",binarySearch(A,0,9,35));
system("pause");
return 0;
}