说到查找方法,不得不提到这个二分法查找,这个算法的实现本身不难,但这个思想,二分天下,化繁为简,一下子将数据的查找量砍掉了一半,层层定位,逐步排除不合适的数据,直到最后一个为止。相对以往的从头至尾的遍历,可以说是极大的进步。并且很多算法思想,以及框架设计都是基于此。
二分加递归,简单的代码即可实现超强的功能。
但是,二分法如此强大,还有一个原因,它是建立在数据有序的基础上。但是万一数据无序,它就无从下手了。所以,它能工作的前置的条件,有一个强大的排序算法帮它将数据整理为有序。
贴出代码如下:
public class BinarySearch {
public static int binarySearch(int[] a, int key) {
if (a.length == 0)
return -1;
int first = 0;
int last = a.length - 1;
int mid;
while (first <= last) {
mid = (first + last) / 2;
if (a[mid] == key)
return mid;
if (a[mid] > key)
last = mid - 1;
if (a[mid] < key)
first = mid + 1;
}
return -1;
}
public static void main(String[] args) {
int[] a = { 1, 3, 4, 5, 8, 7, 9, 11, 15 };
System.out.println(binarySearch(a, 9));
}
}