非递归实现
import java.util.*;
public class Test {
public static void main(String[] args) {
int[] a = {4, 5, 7, 8, 11, 13, 15, 19, 23};
System.out.println(Test.binarySearch(a, 11));
}
public static int binarySearch(int[] a, int x) {
int low = 0, higt = a.length - 1;
while (low <= higt) {
int mid = (low + higt) / 2;
if (a[mid] < x) {
low = mid + 1;
} else if (a[mid] > x) {
higt = mid - 1;
} else {
return mid;
}
}
return -1;
}
}
/**
* 二分搜索算法递归实现
* @param array
* @param element
* @return
*/
public static int BinarySearch(int[] array,int element,int left, int right){
int mid = (right + left) >> 1;
if (array[mid] == element) {
return mid;
}else{
if (right - left > 1){
if (array[mid] > element){
return BinarySearch(array,element,left,mid - 1);
}else {
return BinarySearch(array, element, mid + 1, right);
}
}else
return -1;
}