/** * 二分查找 使用二分的前提是 必须是有序的数据 * @param array * @param fromIndex 起始位置 * @param endIndex 最后位置 * @param key 要查的数据 * @return */ public static int binarySearch( int [] array,int fromIndex ,int endIndex , int key){ // 第一种 // int low = fromIndex ; // int high = endIndex ; // while (low<high){ // int mind = (low+high)/2 ; // if(array[mind]<key){ // low = (low+high)/2+1 ; // }else if (array[mind]>key){ // high = mind; // }else { // return mind; // } // } // 第二种 // 左闭右开 低位 高位 // 下面的也是可以的 int low = fromIndex ; int high = endIndex-1 ; while (low<=high){ int mind = (low+high)/2 ; if(array[mind]<key){ low = mind +1 ; }else if (array[mind]>key){ high = mind-1; }else { return mind; } } return -1 ; // 没找到相关的数据 返回-1 }
适用范围: 二分查找使用的前提是 必须是有序的数据 。