package com.it;
import java.util.Arrays;
/**
* 测试二分法查找
*/
public class Test08 {
public static void main(String[] args) {
int[] arr = {22,42,11,44,87,33,43,54};
int searchValue = 44;//要查找的值
System.out.println(searchValue+"索引位置:"+binarySearch(arr,searchValue));
}
/**
*
* @param array 目标数组
* @param value 索要查找的值
* @return 如果找到,则返回这个值在数组中的索引,没找到则返回-1
*/
public static int binarySearch(int[] array,int value) {
Arrays.sort(array);//对数组进行排序
// System.out.println(Arrays.toString(array));
int low = 0;//数组最小值下标
int high = array.length-1;//数组最大值下标
while (low<=high) {
int middle = (low+high)/2;
if(value == array[middle]) {
return middle;
}
if(value<array[middle]) {
high = middle-1;
}
if(value>array[middle]) {
low = middle+1;
}
}
return -1;//如果没找到则返回-1
}
}