java中二分查询数组
/** * 二分查询 * @author ma * @version V1.0 */ public class ArrayHalfSort { /* * 二分查询: * 就是用数组中的中间的一个元素和转入的变量比较,如果小于中间的元素,则以中间元素地前一个元素作为最的一个元素,重复比较,反之 亦然 * 注册: * 1.数组为有序数组 * 2.注册索引越界 */ public static void main(String[] args) { int[] arr = {11,22,33,44,55,66,77,88,99,100}; arrayHalfFind(arr,11); System.out.println(ArrayHalfFind(arr,556)); } /** * 二分法查找整数在数组中的索引 * @param arr 要查找的数组 * @param value 要查找的数字 * @return 如果数字在数组中,则返回索引值;反之返回-1 */ public static int arrayHalfFind(int[] arr, int value) { //数组的最大索引 int max = arr.length-1; //最小索引 int min = 0; //定义 一个int mid 来接收数组索引的二分之一值 int mid = (min + max)/2; //遍历数组 while(arr[mid] != value){ //如果中间的值arr[mid]大于传入 的值value,则max = mid -1;如果中间的值arr[mid]小于传入 的值value,则min = mid +1; if(arr[mid] > value){ max = mid -1; }else if(arr[mid] < value ){ min = mid + 1; } //如果min > max ,则数组中没有该数,返回-1 if(min > max){ return -1; } //得到新的中间索引 mid = (min + max)/2; } return mid; } }