折半查询也称二分法查询..
以下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);
}
}