一:原理
二分查找又称折半查找,它是一种效率较高的查找方法。 二分查找是一种分治。
二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回数据下标,失败即表示数组不存在该元素返回-1。
前提:二分查找法只适用于顺序存储的有序表。即:二分查找的前提是需要查找的数组必须是已排序的
二:代码实现
package package_4;
/**
* 二分查找
* @author luhuanju
*/
public class Seclect {
public static void main(String[] args) {
//必须是排序过的
int data[]=new int[]{1,2,4,5,8,9,13,17,19,21,22,23};
//可看到控制台输出结果为6
System.out.println(BinSearch(data,0,12,13));
}
/**
* 采用递归的方式实现二分查找
*
* @param data :排序的数据源数组
* @param startLocation :开始的下标,因为二分查找
* @param endLocation :数据长度
* @param key :要查找的key
* @return :key的下标
*/
public static int BinSearch(int []data,int startLocation,int endLocation,int key){
if(startLocation<=endLocation){
int middle=(startLocation+endLocation)/2;
if(key==data[middle]){//中间值
return middle;
}
else if(key<data[middle]){//在左半
return BinSearch(data,startLocation,middle-1,key);
}
else if(key>data[middle]){////在右半
return BinSearch(data,middle+1,endLocation,key);
}
}
return -1;//不存在,
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/yianemail/article/details/47108353