二分查找的递归和非递归实现(C++函数模版)

原创 2016年08月28日 20:29:54

        递归和迭代是编程中的基本思想。这里通过递归和迭代实现二分查询。

        

template<class T>
int BinarySearchRecursion(T data[],T element,int start,int end)
{
	if(start < 0 || start > end)
	{
		return -1;
	}

	int mid = (start+end)/2;

	if(element == data[mid])
	{
		return mid;
	}
	else if(element > data[mid])
	{
		return BinarySearchRecursion(data,element,mid+1,end);
	}
	else
	{
		return BinarySearchRecursion(data,element,start,mid-1);
	}
}

template<class T>
int BinarySearchNotRecursion(T data[],T element,int start,int end)
{
	if(start < 0 || start > end)
	{
		return -1;
	}

	do
	{
		int mid = (start+end)/2;

		if(element == data[mid])
		{
			return mid;
		}
		else if(element > data[mid])
		{
			start = mid+1;
		}
		else
		{
			end = mid-1;
		}
	}while(start<=end);

	return -1;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

二分查找的递归和非递归实现,二分查找的扩展

凡是有序数组中的查找问题,都应该联系二分查找解决1. 递归实现// 递归二分查找 int BinarySearch(int nums[], int left, int right, int key) ...

二分查找——递归与非递归

二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

二分查找的非递归实现

二分查找类似于生活中的翻书。比如一本书,页码已经是升序排好的。这个时候你要看第200页,随手一翻,发现是第100页,于是前面100页你就不用翻了,直接翻后面。这一翻,翻到了第300页,于是300页后面...

二分查找的非递归实现

二分查找常见的都是递归的实现形式,昨天面试sou g o

二分查找算法递归和非递归实现

自己接触和了解过的查找算法总结起来分为3个吧: 1. 静态查找(主要是二分查找,效率较高) 2. 动态查找(二叉查找树) 3. 哈希表 首先来说二分查找吧! 基本思想: 时间复杂度: 空间复杂度: 代...

二分查找递归和非递归实现

1、二分查找(折半查找)算法描述:首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键...
  • vgxpm
  • vgxpm
  • 2015-07-21 21:59
  • 370

二分查找法(递归和非递归实现)

二分查找发:      二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。(借鉴百度百...

二分查找递归非递归实现并分析

二分查找在有序数列的查找过程中算法复杂度低,并且效率很高。因此较为受我们追捧。其实二分查找算法,是一个很经典的算法。但是呢,又容易写错。因为总是考虑不全边界问题。 用非递归简单分析一下,在编写过程中...

二分查找的非递归、递归实现及其优化

/** * 二分查找的非递归、递归实现及其优化 * 算法要求序列有序 * 1、折半查找是进行加法与除法运算的(mid=(low+high)/2) * 2、插值查找则进行更复杂的四则运算(mid...

二分查找算法java版实现(递归实现与非递归实现)

java版实现二分查找,分别采用递归方式,非递归方式实现。
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)