package sort;
import java.util.Arrays;
public class SearchUtils {
public static void main(String[] args) {
int[] arr = { 54, 26, 93, 17, 77, 31, 44, 55, 20 };
// 二分查找要求数组有序
SortUtils.quickSort(arr, 0, arr.length - 1);
System.out.println(binarySearch(arr, 55));
System.out.println(binarySearch2(arr, 78));
}
// 二分查找————递归实现
public static boolean binarySearch2(int[] arr, int item) {
int first = 0;
int last = arr.length - 1;
if (first >= last) {
return false;
} else {
int mid = (first + last) / 2;
if (arr[mid] == item) {
return true;
} else if (arr[mid] > item) {
return binarySearch(Arrays.copyOfRange(arr, first, mid - 1), item);
} else {
return binarySearch(Arrays.copyOfRange(arr, mid + 1, last), item);
}
}
}
// 二分查找————非递归实现
public static boolean binarySearch(int[] arr, int item) {
int first = 0;
int last = arr.length - 1;
while (first <= last) {
int mid = (first + last) / 2;
if (arr[mid] == item) {
return true;
} else if (arr[mid] > item) {
last = mid - 1;
} else {
first = mid + 1;
}
}
return false;
}
}