二分法检索(binary search)又称折半检索
package com.yqq.app11;
import java.util.Arrays;
/**
* @Author yqq
* @Date 2021/11/20 17:55
* @Version 1.0
*/
public class TestBinarySearch {
public static void main(String[] args) {
int[] values = {20,12,8,50,30,100,80,9,7,40,10};
//要查找的数
int serachValue = 10;
//二分查找之前一定要对数组元素排序
Arrays.sort(values);
System.out.println(Arrays.toString(values));
System.out.println(serachValue+"元素索引:"+binarySearch(values,serachValue));
}
private static int binarySearch(int[] values, int serachValue) {
int startIndex = 0;
int endIndex = values.length - 1;
while (startIndex < endIndex){
int middle = (startIndex + endIndex)/2;
if(serachValue == values[middle])
return middle;//返回查询到的索引位置
if(serachValue > values[middle])
startIndex = middle + 1;
if(serachValue < values[middle])
endIndex = middle - 1;
}
return -1;//循环完毕,说明没找到,返回-1
}
}
[7, 8, 9, 10, 12, 20, 30, 40, 50, 80, 100]
10元素索引:3