public class BinarySearch {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = new int[] { 12, 23, 34, 45, 56, 67, 77, 89, 90 };
System.out.println(binarySearch(arr, 1));
System.out.println(binarySearch(arr, 12));
System.out.println(binarySearch(arr, 67));
System.out.println(binarySearch(arr, 99));
System.out.println(binarySearch2(arr, 0, 8, 1));
System.out.println(binarySearch2(arr, 0, 8, 12));
System.out.println(binarySearch2(arr, 0, 8, 67));
System.out.println(binarySearch2(arr, 0, 8, 99));
}
private static int binarySearch(int[] nums, int x){
int low = 0;
int high = nums.length - 1;
while(low <= high){
int mid = (low + high)/2;
if(nums[mid] == x){
return mid;
}else if(nums[mid] < x){
low = mid +1;
}else{
high = mid - 1;
}
}
return -1;
}
private static int binarySearch2(int[] nums, int low, int high, int x){
if(low > high){
return -1;
}else {
int mid = (low + high)/2;
if(nums[mid] == x){
return mid;
}else if(nums[mid] < x){
return binarySearch2(nums, mid + 1, high, x);
}else {
return binarySearch2(nums, low, mid - 1, x);
}
}
}
}
二分查找递归和非递归(java实现)
最新推荐文章于 2023-02-25 10:15:42 发布