折半查询也称二分法查询..

 

以下java实现的简单的例子.具体代码如下:

package pack.java.splitdemo;

public class SplitDemo {
	
	/**
	 * author:ZhouHaiTao;
	 * @param arrayData 数据;
	 * @param searchData 查询的数据;
	 * @param start 开始索引;
	 * @param end  结束索引;
	 * @return 索引下标;没有查询到值,这返回-1;
	 */
	private int splitMethod(int[] arrayData,int searchData,int start,int end){
		int index = (start + end) / 2;
		int data = arrayData[index];
		
		if(start >end){
			return -1;
		}
		
		if(data == searchData){
			return index;
		}else {
			//如果查询出的数据,小于查询出的数据,
			if(data < searchData){
				//利用递归,再次查找;index向上移动1位。
				return splitMethod(arrayData, searchData, index+1, end);
			}else{
				return splitMethod(arrayData, searchData, start, end-1);
			}
		}
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SplitDemo splitDemo = new SplitDemo();
		int[] arrayData = new int[]{1,3,20,23,29,45,54,64,99};
		int index = splitDemo.splitMethod(arrayData,54, 0,arrayData.length-1);
		System.out.println("is exists:"+index);
	}
}