二分搜索
public class BinarySearch {
/** 递归二分 **/
public int binarySearch(int[] arr, int left, int right, int key) {
if (left > right) {
return -1;
} else {
int mid = (left + right) / 2;
if (arr[mid] == key) {
return mid;
} else if (arr[mid] < key) {
return binarySearch(arr, mid+1, right, key);
} else {
return binarySearch(arr, left, mid-1, key);
}
}
}
/** 迭代二分 **/
public int binarySearch(int[] arr, int left, int right, int key) {
int mid;
while (left<=right) {
mid = (left + right) / 2;
if (arr[mid] == key) {
return mid;
} else if (arr[mid] < key) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
public static void main(String[] args) {
int[] arr = {1, 3, 5, 7, 9};
int key = 7;
System.out.println(new BinarySearch().binarySearch(arr, 0, arr.length-1, key));
}
}