二分查找之我的理解

说到查找方法,不得不提到这个二分法查找,这个算法的实现本身不难,但这个思想,二分天下,化繁为简,一下子将数据的查找量砍掉了一半,层层定位,逐步排除不合适的数据,直到最后一个为止。相对以往的从头至尾的遍历,可以说是极大的进步。并且很多算法思想,以及框架设计都是基于此。 

 

二分加递归,简单的代码即可实现超强的功能。

 

但是,二分法如此强大,还有一个原因,它是建立在数据有序的基础上。但是万一数据无序,它就无从下手了。所以,它能工作的前置的条件,有一个强大的排序算法帮它将数据整理为有序。

 

贴出代码如下:

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));
	}
}

 

 

你可能感兴趣的:(二分查找)