import java.util.Arrays;
/**
* 二分查找
* 在有序数组中查找是否存在特定的k值
* */
public class BinarySearch {
public static boolean binarySearch(int[] arr , int k){
if (arr == null || arr.length == 0){
return false;
}
int left = 0;
int right = arr.length - 1;
while (left < right){
int mid = left + ((right - left) >> 1);
if(arr[mid] == k ){
return true;
}else if (arr[mid] > k){
right = mid - 1;
}else if (arr[mid] < k){
left = mid + 1;
}
}
return arr[left] == k;
}
public static int[] generateRandomArray(int len, int val) {
int[] arr = new int[(int) ((val + 1) * Math.random())];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) ((val + 1) * Math.random());
}
return arr;
}
public static void main(String[] args) {
int len = 10;
int val = 100;
boolean flag = true;
int value = -1;
int[] arr = generateRandomArray(len, val);
for (int i = 0; i < arr.length; i++) {
if (Math.random() > 0.5){
value = arr[i];
}
break;
}
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
System.out.println(value);
flag = binarySearch(arr,value);
System.out.println(flag);
}
}
简单算法--二分查找
于 2022-03-18 11:23:04 首次发布