假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,然后缩小区间重复操作,直到找到为止。
#includeusing namespace std; int main () { int a[1000]; int l,r,mid,x; for(int i=0;i<1000;i++) scanf("%d",&a[i]);//输入1000个已经排好序的元素 //据说scanf比cin省时间 cin>>x;//x为要查找的数字 l=0;r=999;mid=(l+r)/2;//l为起始下标,r为末尾下标,mid为中间下标 ,此时mid将这1000个元素分为两个区间 while(l 注:按照这个方法,a[mid]一定是有值的,所以最后需要来通过比较判断这个数列到地有没有要找的那个x值;



