常见对象_数组高级二分查找原理图解

来源:互联网 发布:淘宝短连接转化 编辑:程序博客网 时间:2024/05/22 06:52



package cn.itcast_04;/* * 查找: * 基本查找:数组元素无序(从头找到尾) * 二分查找(折半查找):数组元素有序 *  * 分析: * A:定义最大索引,最小索引 * B:计算出中间索引 * C:拿中间索引的值和要查找的值进行比较 * 相等:就返回当前中间索引 * 不相等: * 大左边找 * 小右边找 * D:重新计算出中间索引 * 大左边找 * max = mid - 1; * 小右边找 * min = mid + 1; * E:回到B的位置 */public class ArrayDemo {public static void main(String[] args) {// 定义一个数组int[] arr = { 11, 22, 33, 44, 55, 66, 77 };// 写功能实现int index = getIndex(arr, 33);System.out.println("index:" + index);index = getIndex(arr, 3393);System.out.println("index:" + index);}/* * 两个明确: 返回值类型:int 参数列表:int[] arr,int value */public static int getIndex(int[] arr, int value) {// 定义最大索引,最小索引int max = arr.length - 1;int min = 0;// 计算出中间索引int mid = (max + min) / 2;// 拿中间索引的值和要查找的值进行比较// 不相等:while (arr[mid] != value) {if (arr[mid] > value) {max = mid - 1;} else if (arr[mid] < value) {min = mid + 1;}// 加入判断if (min > max) {return -1;}// 重新计算出中间索引mid = (max + min) / 2;}return mid;}}



0 0
原创粉丝点击