二分查找的递归和非递归实现(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;
}

相关文章推荐

c/c++递归实现二分查找

使用递归的方式实现二分查找,代码中输出用的c++,如果是c的话,只要将头文件改成#include,删除命名空间using namespace std; 并且将输出cout #include u...

二分查找的非递归实现

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

二分查找非递归实现--【编程珠玑】

首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一...
  • xjm199
  • xjm199
  • 2014年01月04日 13:08
  • 946

二分查找的非递归实现

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

二叉树的C++非递归实现

  • 2013年11月17日 19:21
  • 28.39MB
  • 下载

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

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

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

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

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

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

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

package sorttest; /** *名称:BinarySearch *功能:实现了折半查找(二分查找)的递归和非递归算法. *说明: * 1、要求所查找的数组已有序,并且其中元素已实...
  • wealon
  • wealon
  • 2014年08月07日 14:28
  • 337

二分查找(递归与非递归实现)

二分查找排序的重要意义之一,就是为检索带来方便。而在有序表中查找元素常常使用二分查找(Binary Search),有时也译为“折半查找”,它的基本思想就像是“猜数字游戏”: 你在心里想一个不超过10...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二分查找的递归和非递归实现(C++函数模版)
举报原因:
原因补充:

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