二分算法 就是在 一组 有序 数组中 通过中间值(数组中间的那个数字)的方法 找到 某个数的下标,如果大于中间值 ,则在中间值与最大值之间 的中间值再比较。
public class two { //二分算法 public static void main(String[] args) { int array[]={1,22,44,55,77}; int index=getIndex(array,0,array.length-1, 22); System.out.println(index); } // 1.普通方法 ,用中间的数来判断,如果小于中间就用前半段,大于就后半段, public static int getIndex(int []array,int key){ if(array==null||array.length==0){ return -1; } if(key<array[0]||key>array[array.length-1]){ return -1; } int left=0; int right=array.length-1; int mid=(left+right)/2; while(left<=right){ if(key==array[mid]){ return mid; } if(key<array[mid]){ right=mid-1; } if(key>array[mid]){ left=mid+1; } mid=(left+right)/2; } return -1; } //2.使用递归算法 public static int getIndex(int[]array,int start,int end,int key){ int mid=(start+end)/2; if(key==array[mid]){ return mid; } if(start>=end){ return -1; } if(key>array[mid]){ return getIndex(array,mid+1,end,key); } if(key<array[mid]){ return getIndex(array,start,mid-1,key); } return -1; }
end