package com.demo;
public class Search {
public static void main(String[] args) {
int[] arr = { 1, 2, 6, 7, 8, 11, 14, 25, 44, 55 };
// int index=searchTest(arr, 55);
int index = searchTest2(arr, 25);
if (index == -1) {
System.out.println("不存在");
} else {
System.out.println(index);
}
}
//非递归二分查找
public static int searchTest(int[] arr, int key) {
int low = 0;
int height = arr.length - 1;
while (low < height || low == height) {
int mid = (low + height) / 2;
if (arr[mid] == key) {
return mid;
} else if (arr[mid] > key) {
height = mid - 1;
} else {
low = mid + 1;
}
}
return -1;
}
//递归二分查找
public static int searchTest2(int[] arr, int key) {
int low = 0;
int height = arr.length - 1;
return searchDemo(arr, key, low, height);
}
public static int searchDemo(int[] arr, int key, int low, int height) {
if (low > height) {
return -1;
}
int mid = (low + height) / 2;
if (arr[mid] == key) {
return mid;
}
else if (arr[mid] > key) {
return searchDemo(arr, key, low, mid - 1);
} else {
return searchDemo(arr, key, mid + 1, height);
}
}
}