折半查找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int Search(int a[],int x,int arraySize){
int low = 0 , high = arraySize-1;
int mid = (high - low) / 2 + low;
while(low <= high){
//注意这里为什么是等于,因为low与high始终在闭区间内运算,当low=high时,仍有一个值没有运算。
if(a[mid] == x){
return x;
}else{
if(a[mid] < x){
mid = low +1 ;
}
if(a[mid] > x){
mid = high - 1;
}
}
}
}