数组查找之二分查找(折半查找)---带图详解+代码逐步分析!赋基本查找以及基本查找的实现代码

话不多说,直接上图,开始分析:
数组查找之二分查找(折半查找)---带图详解+代码逐步分析!赋基本查找以及基本查找的实现代码
从上图我们不难分析出二分查找的基本思想以及实现的思路。

代码的逐步分析加实现:

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, 333);
		System.out.println("index:"+index);
	}
	
	/*
	 * 两个明确:
	 * 
	 * 	返回值类型:int
	 * 	参数列表:int[] arr,int value
	 * 
	 * */
	public static int getIndex(int[] arr,int value) {
		//定义最小索引,最大索引
		int min = 0;
		int max = arr.length - 1;
		
		//计算出中间索引
		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;
	}
}

基本查找:
数组元素无序(从头到尾)

public static int getIndex(int[] arr,int value) {
					int index = -1;
					for(int x = 0;x < arr.length;x++) {
						if(arr[x] == value) {
							index = x;
							break;
						}
					}
					return index;
				}