public class Test {
public static void main(String[] args) {
System.out.println(binarySearchNonRecursive(new int[] {1,4,5,7}, 5));
}
// 二分查找递归
public static int binarySearchRecursive(int[] arr, int num, int start, int end) {
if (start > end)
return -1;
int mid = start + ((end - start) >> 1);
if (arr[mid] == num)
return mid;
else if (arr[mid] < num)
return binarySearchRecursive(arr, num, mid + 1, end);
else
return binarySearchRecursive(arr, num, start, mid - 1);
}
// 二分查找非递归
public static int binarySearchNonRecursive(int[] arr, int num) {
int left = 0, right = arr.length - 1;
while (left <= right) {
int mid = left + ((right - left) >> 1);
if(arr[mid]==num)return mid;
else if(arr[mid]<num)
left=mid+1;
else right=mid-1;
}
return -1;
}
}