//二分查找,大数据量,有序,数组,内存连续,按中间分割,取值比对,割去一半,
//复杂度:log对数(n/2k=1)
//内存消耗:越来越少
public int search(int[] target, int value, int start, int end) {
int mid = (end + start) >> 1;
if (target[mid] == value) {
return mid;
} else if (target[mid] > value) {
return search(target, value, start, mid);
} else {
return search(target, value, mid, end);
}
}
public int search(int[] target, int value) {
int start = 0;
int end = target.length-1;
int mid = (end+start) >> 1;
while(target[mid]!=value){
if(target[mid]<value){
start = mid;
}else{
end = mid;
}
mid = (end+start) >> 1;
}
return mid;
}
public static void main(String[] args) {
int[] target = { 1,22,55,66,88,96,100,102,899, 1000,1001, 1002,1023,1056,1089,1099 };
System.out.println(new test().search(target, 1000));
System.out.println(new test().search(target, 1000,0,target.length-1));
}