一:查找思路:
二分查找的使用前提:数组元素要有顺序 二分查找相当于每次去掉一半的查找范围
1.定义min=0 和max=最大索引 表示要查找的范围
2.计算出mid的索引值(min+max)/2
3.判断mid位置的元素是否为要查找的元素,如果是直接返回对应的索引
4.如果要查找的值在mid的左半边,那么min值不变,max=mid-1,继续下次循环查找
5.如果要查找的值在mid的右半边,那么max值不变,min=mid+1,继续下次循环查找
二:代码实现:
package com.wt.myinterage;
public class BinarySearch {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,9,10};
int number = 6;
//1.我现在要干什么:二分查找
//2.我干这件事需要什么 ---数组元素
//3.干完要不要把结果返回调用者---把索引返回
int index = BinarySearchForIndex(arr,number);
System.out.println(index);
}
private static int BinarySearchForIndex(int[] arr, int number) {
int min = 0;
int max = arr.length-1;
//循环查找max>min
while(max>=min){
//定义一个中间数
int mid = (min+max)>>1;//要写在循环里
//mid指向的元素大于number
if (arr[mid]>number){//中间索引位置的值大于要查找的值,就表示,所要查找的值在mid的左边,namemax=mid-1
max = max-1;
}else if (arr[min]<number){
min= min+1;
}else {
//
return mid;
}
}
//没找到返回-1
return -1;
}
}
三:运行结果:
得到验证6的索引位置值确实是5