一:原理
二分查找又称折半查找,它是一种效率较高的查找方法。 二分查找是一种分治。
二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回数据下标,失败即表示数组不存在该元素返回-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