码迷,mamicode.com
首页 > 编程语言 > 详细

二分查找算法的递归实现

时间:2015-07-28 18:32:47      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:二分查找   递归实现   算法   

  

一:原理

        二分查找又称折半查找,它是一种效率较高的查找方法。 二分查找是一种分治。

        二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回数据下标,失败即表示数组不存在该元素返回-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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!