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