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

二分查找的递归和非递归写法

二分查找是针对有序序列来说的,在有序序列中使用二分查找能大大提高查找效率,这里记录一下二分查找的递归和非递归写法。非递归写法:public int binarySearch(int[] a, int ...
  • buptwds
  • buptwds
  • 2016年07月18日 18:21
  • 801

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

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

二分查找算法(OC版--非递归实现)

闲来无事,歇歇二分查找算法 // // ViewController.m // BinarySearch // // Created by bcc_cae on 16/3/25. // Cop...
  • jasonjwl
  • jasonjwl
  • 2016年03月25日 17:29
  • 1158

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

二分查找算法代码: #include using namespace std; //非递归实现 int FindElement(int a[],int first,int end,int...
  • liuzhanchen1987
  • liuzhanchen1987
  • 2012年03月20日 19:25
  • 4052

二叉树的递归与非递归实现

二叉树的递归实现: #include using namespace std; #define LEN sizeof(struct Tree) struct Tree { int key; ...
  • z84616995z
  • z84616995z
  • 2014年03月09日 18:33
  • 1485

二叉树的四种遍历的递归和非递归的实现

二叉树的三种遍历为:前序遍历,中序遍历和后序遍历。 遍历的实现可分为递归和非递归。递归法与二叉树的定义相似,非递归法采用栈去模拟实现。 一、前序遍历的次序为:根结点——左结点——右结点。 递归法实现:...
  • xiaominkong123
  • xiaominkong123
  • 2016年06月02日 16:50
  • 471

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

1,.非递归 //二分查找非递归,from JDK1.7 Arrays.binarySort() public static int binarySearch(int[] a, int key) ...
  • STU756
  • STU756
  • 2015年05月26日 00:49
  • 305

C++递归与非递归实现链表的反转

#include"list.h" using namespace std; //非递归实现链表的反转,链表头结点要放元素 listnode* reverselist(listnode* head...
  • wordwarwordwar
  • wordwarwordwar
  • 2014年09月15日 14:38
  • 695

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

public class Find   {       //使用非递归方法实现       public static int binFind1(int[] order...
  • hagle_wang
  • hagle_wang
  • 2017年10月25日 18:06
  • 63

算法:两种方式(递归/循环)实现二分查找

算法:两种方式(递归/循环)实现二分查找
  • books1958
  • books1958
  • 2015年06月15日 17:55
  • 1488
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二分查找的递归和非递归实现(C++函数模版)
举报原因:
原因补充:

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