1 package cn.stringbuffer.com; 2 3 public class ErFenselect { 4 5 public static void main(String[] args) { 6 // TODO Auto-generated method stub 7 // 定义一个数组元素 8 int[] arr = { 11, 22, 33, 44, 55, 66, 77, }; 9 int index = getindex(arr, 33); 10 System.out.println(index); 11 // 测试数组元素中如果没有这个元素 12 int index2 = getindex(arr, 333); 13 System.out.println(index2); 14 15 } 16 17 public static int getindex(int[] arr, int value) { 18 // 定义最大索引等于数组长度-1 19 int max = arr.length - 1; 20 // 定义最小索引为0开始 21 int min = 0; 22 // 计算中间索引 23 int mid = (max + min) / 2; 24 while (arr[mid] != value) {// 当中间索引的值不等于传进来的参数 25 if (arr[mid] > value) {// 如果中间索引大于传进来的参数 26 max = mid - 1;// 最大索引值等于中间索引-1 27 } else if (arr[mid] < value) {// 如果中间值小于传进来的参数 向右边寻找 28 min = mid + 1;// 最小值等于中间值+1,向右边寻找 29 } 30 if (min > max) {// 有的时候可能传入的数字不存在数组元素中,当mid的值都超过最大的索引值的时候 31 return -1;// 例如: int index2=getindex(arr, 333); 32 33 } 34 mid = (max + min) / 2;// 然后依次循环 35 } 36 return mid;// 返回mid的值 37 } 38 39 }
二分查找(折半查找)
猜你喜欢
转载自www.cnblogs.com/yschung/p/9274709.html
今日推荐
周排行