二分查找排序,用递归法做
public class BinarySearchTest2 {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 22,4, 5, 9,8,6,11};
Arrays.sort(arr);
System.out.println("排序后:"+Arrays.toString(arr));
int index = binarySearch(arr, 9);
System.out.println("index = " + index);
}
public static int binarySearch(int[] arr, int key) {
int minIndex = 0;
int maxIndex = arr.length-1;
return binarySearch1(arr,minIndex,maxIndex,key);
}
/**
*二分查找用递归法
* @param arr 要查找的数组
* @param minIndex 开始的下标
* @param maxIndex 结束的下标
* @param key 要查找的元素
* @return
*/
private static int binarySearch1(int[] arr, int minIndex, int maxIndex, int key) {
if (minIndex>maxIndex){
return -1;
}
int midIndex = (minIndex+maxIndex)/2;
if (key>arr[midIndex]){
return binarySearch1(arr, minIndex+1, maxIndex, key);
}else if (key<arr[midIndex]){
return binarySearch1(arr, minIndex, maxIndex-1, key);
}else {
return midIndex;
}
}
}