标签:style 二分 下标 目标 span length color return 更新
二分法查找针对的是对有序的数组。特点:效率很高。
class Demo6{ public static void main(String[] args){ //先定义一个有序数组 int[] array = {21, 34, 56, 78, 79 ,83, 85, 90}; int index = findIndex(array,83); System.out.println(index); } //定义一个方法可以进行二分法查找 public static int findIndex(int[] array, int num){ //先找出最小下标,最大下标和最大下标 int minIndex = 0; int maxIndex = array.length-1; int midIndex = (array.length-1)/2; //使用条件判断,判断想要找到的数num是否等于数组此时的中间数 while(num != array[midIndex]){ if(num > array[midIndex]){ //如果num > array[midIndex]时,执行该语句 //更新最小下标 minIndex = midIndex + 1; //更新中间下标 midIndex = (maxIndex + minIndex)/2; }else{ //如果num < array[midIndex]时,执行该语句 //更新最大下标 maxIndex = midIndex - 1; //更新中间下标 midIndex = (minIndex + maxIndex)/2; } } return midIndex; } }
老师的代码如下:
class Demo16{ /** * 求出数组的最大值 */ public static void main(String[] args){ //定义一个数组 int [] array = {4,6,7,8,9,23,55,67,89,99,615}; //查找55的索引 int index = findIndexBinary(array, 615); System.out.println("索引是:"+index); } /** *二分法查找 */ public static int findIndexBinary(int [] array, int a){ //最小索引 int minIndex = 0; //最大索引 int maxIndex = array.length - 1; //中间索引 int midIndex = (minIndex + maxIndex)/2; while(a != array[midIndex]){ //如果a大于中间值 if(a > array[midIndex]){ //更新最小索引 minIndex = midIndex + 1; }else{ //更新最大索引 maxIndex = midIndex - 1; } //更新中间索引 midIndex = (minIndex + maxIndex)/2; } //返回目标索引 return midIndex; } }
标签:style 二分 下标 目标 span length color return 更新
原文地址:http://www.cnblogs.com/chenttc/p/7726420.html