package shujujiegou;
public class binarySearch {
public int go(int[] array,int m){
int begin_p=0;
int end_p=array.length-1;//因为index要比数组长度小1
while(begin_p<=end_p){//这里如果没找到会break,比用true好!
int half=(begin_p+end_p)/2;//定义在这里,会自动每次循环前赋值,不用在if里面赋值
if(m>array[half]){
begin_p=half+1;//在这里加1,能减少计算
}else if(m<array[half]){
end_p=half-1;//在这里减1,能减少计算
}else{
return half;
}
}
return -1;
}
public static void main(String[] args){
binarySearch bs=new binarySearch();
int[] array={1,2,3,4,5,6,7,8,9,10};//Arrays.sort(array)能返回排序号的array,不过要import java.util.*;
System.out.println(bs.go(array,8));
}
}
折半查找,最多只要logN次查找。比如2最多能折1次,4最多只能折2次。