public static void main(String[] args) {
int array[] = {11, 23, 54, 65, 76, 13, 55, 66, 70, 98, 30, 99, 103};
//将数组排序
Arrays.sort(array);
System.out.println(Arrays.toString(array));
/*查找元素76的位置(非递归算法)*/
System.out.println(myBinarySearch(array, 76));
System.out.println(Arrays.toString(array));
//查找元素55的位置
System.out.println(recurBinarySearch(array,55,0,array.length-1));
}
/**
*二分法查找元素的位置 非递归算法
*
* @param array
* @param value
* @return
*/
public static int myBinarySearch(int array[], int value) {
int low = 0;
int high = array.length - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (array[mid] == value) {
return mid;
}
if (array[mid] > value) {
high = mid - 1;
}
if (array[mid] < value) {
low = mid + 1;
}
}
return -1;
}
/**
* 二分法查找元素的位置 递归算法
* @param array
* @param value
* @param low
* @param high
* @return
*/
public static int recurBinarySearch(int array[], int value, int low, int high) {
int mid;
mid = (low + high) / 2;
if (low > high) {
return -1;
}
if (array[mid] == value) {
return mid;
} else if (array[mid] > value) {
return recurBinarySearch(array, value, low, mid - 1);
} else {
return recurBinarySearch(array, value, mid + 1, high);
}
}
二分法查找元素的位置
于 2020-05-01 11:17:50 首次发布