`
come_for_dream
  • 浏览: 117130 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

二分搜索的递归和循环实现

 
阅读更多

二分搜索,指的是对已经排好序的数据进行搜索,也叫折半查找。下面我用递归和非递归实现了这一个算法

/**
	 * 二分搜索的递归实现
	 * 
	 * @param a
	 * @param x
	 * @return
	 */
	public int BSearch(int[] a, int x) {
		int left = 0, right = a.length - 1;

		return search(a, x, left, right);
	}

	public int search(int[] a, int x, int left, int right) {

		int mid = (left + right) / 2;
		
		if(left>right){
			return -1;
		}

		if (a[mid] == x) {
			return mid;
		}

		if (a[mid] > x) {
			return search(a, x, left, mid - 1);
		}

		else
			return search(a, x, mid + 1, right);

	}

	/**
	 * 二分搜索的循环实现
	 * 
	 * @param a
	 * @param x
	 * @return
	 */
	public int search(int[] a, int x) {
		int left = 0, right = a.length - 1;
		for (; left <= right;) {
			int mid = (left + right) / 2;
			if (a[mid] == x)
				return mid;
			if (a[mid] > x) {
				right = mid - 1;
			} else
				left = mid + 1;
		}
		return -1;

	}

 

分享到:
评论

相关推荐

    分别用递归和非递归方法实现二分查找算法 的完整程序

    分别用递归和非递归方法实现二分查找算法 的完整程序,indexof()返回的是循环实现的二分法查找,getindex()实现的是递归算法实现的二分法查找。

    js 递归json树实现根据子id查父id的方法分析

    对于未知层级的树状数据,用for循环是无法实现的,因为不知道要循环几层,那么最合适的方法就是用js递归 界面结构: json数据: orgTreeData:{ nodeId:19A5B, nodeName:预分析用户:1313.85万人, nodeType:root...

    第12讲 递归和迭代.pptx

    枚举算法,递归与分治策略,递归与迭代的思想、求最大值最小值、线性查找、二分查找与冒泡排序以及选择与交换排序、插入和希尔排序。本课程除了强调经典的算法理论和模型,亦兼顾编程实践能力。力图使得学员面对复杂...

    PHP基于二分法实现数组查找功能示例【循环与递归算法】

    主要介绍了PHP基于二分法实现数组查找功能,结合实例形式分析了while循环与递归调用算法实现二分查找功能的相关实现技巧,需要的朋友可以参考下

    Python递归函数 二分查找算法实现解析

    主要介绍了Python递归函数 二分查找算法实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    数据结构和算法必知必会的50个代码实现

    * 实现一个有序数组的二分查找算法* 实现模糊二分查找算法(比如大于等于给定值的第一个元素) ## 散列表* 实现一个基于链表法解决冲突问题的散列表* 实现一个LRU缓存淘汰算法 ## 字符串 ## 二叉树 ## 堆 ## 图 ##...

    PHP二分查找算法的实现方法示例

    主要介绍了PHP二分查找算法的实现方法,简单分析了二分查找算法的原理,并结合具体实例形式给出了php基于循环与递归两种方法实现二分查找的相关操作技巧,需要的朋友可以参考下

    第8讲 循环结构(二).pptx

    枚举算法,递归与分治策略,递归与迭代的思想、求最大值最小值、线性查找、二分查找与冒泡排序以及选择与交换排序、插入和希尔排序。本课程除了强调经典的算法理论和模型,亦兼顾编程实践能力。力图使得学员面对复杂...

    第9讲 循环的嵌套.pptx

    枚举算法,递归与分治策略,递归与迭代的思想、求最大值最小值、线性查找、二分查找与冒泡排序以及选择与交换排序、插入和希尔排序。本课程除了强调经典的算法理论和模型,亦兼顾编程实践能力。力图使得学员面对复杂...

    C语言版数据结构与算法分析-严蔚敏经典视频教程

    05-001数组的定义、顺序表示和实现 05-002矩阵相乘的一般算法、稀疏矩阵相乘算法 06-001树的定义和基本术语 06-002习题课:链表、双向循环链表的相关基本操作 06-003习题课:栈的基本操作、KMP算法回顾 06-004...

    50个必会的数据结构及算法实现源码

    数组 问题:实现一个支持动态扩容的数组 问题:实现一个大小固定的...二分查找、散列表、字符串处理、二叉树、堆、图、回溯、分治、动态回归等。 资源中包括常用语言:c、java、python、go等实现源码,方便参考学习。

    第7讲 循环结构(一).pptx

    枚举算法,递归与分治策略,递归与迭代的思想、求最大值最小值、线性查找、二分查找与冒泡排序以及选择与交换排序、插入和希尔排序。本课程除了强调经典的算法理论和模型,亦兼顾编程实践能力。力图使得学员面对复杂...

    第8讲 循环结构(二) 作业2.pptx

    枚举算法,递归与分治策略,递归与迭代的思想、求最大值最小值、线性查找、二分查找与冒泡排序以及选择与交换排序、插入和希尔排序。本课程除了强调经典的算法理论和模型,亦兼顾编程实践能力。力图使得学员面对复杂...

    第14讲 二分查找与冒泡排序。.pptx

    枚举算法,递归与分治策略,递归与迭代的思想、求最大值最小值、线性查找、二分查找与冒泡排序以及选择与交换排序、插入和希尔排序。本课程除了强调经典的算法理论和模型,亦兼顾编程实践能力。力图使得学员面对复杂...

    PHP实现的二分查找算法实例分析

    主要介绍了PHP实现的二分查找算法,结合实例形式分析了二分查找算法的原理与循环、递归等实现技巧,需要的朋友可以参考下

    几种常见排序算法实现

    1.6 MergeSort:拆分数组,递归实现排序,二路归并。用哨兵来阻止游标的越界。 线性时间运行的算法: 1.7 CountingSort: 假设数据分布在0到k之间的。对于每个输入x,确定出小于x的数的个数。假设小于x的数有17个,...

    leetcode中国-Data-Structures-And-Algorithms-Roadmap:数据结构和算法路线图

    二分搜索应用程序 二分搜索算法 数组的二分搜索 矩阵上的二分搜索 • 链表 链表实现 逆转问题 排序链表 慢指针和快指针 修改链表 • 堆栈 (LIFO) 执行 前缀、后缀、中缀问题 应用/问题 • 队列 (FIFO) 执行 优先队列...

    数据结构实验

    实验6:二分查找、Hash查找算法的程序实现 (第十五三周星期三7、8节) 一、 实验目的 1 .熟练掌握二分查找算法并能在有序表中进行查找操作。 2. 掌握Hash表的相关算法。 二 、实验要求 1.认真阅读和掌握和本实验...

    PHP递归的三种常用方式

    递归:函数自己调用自己的一种编程方法,类似于循环,所以递归调用的函数中必须有终止条件,否则就会成为死循环 无限级:其实并不是真正的无限级,只是层级不确定,所以我们称之为无限级 因为常用递归实现无限级分类...

Global site tag (gtag.js) - Google Analytics