`
明子健
  • 浏览: 573359 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

二分查找

阅读更多
	/**
	 * 有序数组递归二分查找,定位值的下标
	 * 
	 * @param arr   目标数组
	 * @param start 起始下标
	 * @param end   末尾下标
	 * @param key   查找的值
	 * @return 值的下标
	 */
	static int binarySearch(final int[] arr, int start, int end, int key) {		
		if (start > end || end >= arr.length) {
			return -1;
		}
		/* 中间位置:(end + start) / 2 等于 (end + start) >> 1 */
		int mid = (end + start) >> 1;
		if (key == arr[mid]) {
			return mid;
		}
		if (key > arr[mid]) {
			start = mid + 1;
		}else{
			end = mid - 1;
		}
		return binarySearch(arr, start, end, key);
	}

	/**
	 * 有序数组循环二分查找,定位值的下标
	 * 
	 * @param arr   目标数组
	 * @param start 起始下标
	 * @param end   末尾下标
	 * @param key   查找的值
	 * @return 值的下标
	 */
	static int binaryWhileSearch(final int[] arr, int start, int end, int key) {
		
		int mid=-1;
		do {
			if (start > end || end >= arr.length) {
				return -1;
			}
			/* 中间位置:(end + start) / 2 等于 (end + start) >> 1 */
			mid = (end + start) >> 1;
			if (key > arr[mid]) {
				start = mid + 1;
			}else if (key < arr[mid]) {
				end = mid - 1;
			}
		} while (key != arr[mid]);
		return mid;
	}

 

分享到:
评论

相关推荐

    折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)

    折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)

    二分查找算法PPT课件

    二分查找算法,二分查找算法课件,二分查找算法PPT

    二分查找_测试

    二分查找_测试

    二分查找算法

    二分查找算法

    可视化查找之二分查找

    简单地实现了二分查找的可视化。界面很简单就包括两个部分:界面左侧是可视化查找部分,右侧是二分查找的代码。 程序的关键点主要有两点: 1. 如何在页面上表示出查找程序的运行过程。 2. 如何将排序程序的运行...

    数据结构实验六(二分查找、Hash查找)题目和源程序

    1.二分查找又称为折半查找,它要求要查找的顺序表必须是有序表,即表中结点按关键字有序.并且要用顺序存储结构。 基本思想是:首先将给定值key与表中中间位置记录的关键字相比较,若二者相等,则查找成功,否则...

    二分查找 C语言源代码

    二分查找 C语言语言源代码 用递归写的 C语言入门经典代码 值得收藏

    二分查找算法C++,递归和迭代

    //二分查找 #include const int MAXN=10010; using namespace std; //二分查找,递归实现 int binarySearch(int a[],int low,int high,int key) { //查找某元素是否在数组中,若存在,则返回下标,否则...

    二分查找源代码.cpp

    二分查找

    二分查找代码

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

    二分查找 

    二分查找

    VB 二分查找

    VB 二分查找 VB 二分查找 VB 二分查找

    c/c++二分查找修改版

    s[middle] 关键字小于中值 继续二分查找 并将上限改为middle BinarySearch s x low middle 1 ; else 关键字大于中值 继续二分查找 并将下限改为middle BinarySearch s x middle + 1 high ;"&gt;if high &lt; low ...

    二分查找ppt

    二分查找ppt

    数据结构实验——查找(二分查找&顺序查找)

    一、实验目的: 熟悉各种查找算法及其复杂性,能够根据实际情况选择合适的存储结构。 二、实验要求: 1、掌握查找的基本方法。 2、提交实验报告,报告...编程分别对有序顺序表的顺序查找,二分查找算法进行实现。

    二分查找法

    int BinSearch(SeqList R,int n,KeyType k) /*二分查找算法*/ { int low=0,high=n-1,mid,count=0; while (low) { mid=(low+high)/2; printf("第%d次查找:在[%d,%d]中查找到元素R[%d]:%d\n",++count,low,high,...

    文件读出数组进行选择排序和二分查找(java)

    文件读出数组进行选择排序和二分查找文件读出数组进行选择排序和二分查找java实现

    分析二分查找成功时的平均查找长度

    设计一个程序,建立由有序序列R[0..n-1]进行二分查找产生的判定树,在此基础上完成如下功能: (1) 输出n=11时的判定树并求成功情况下的平均查找长度ASl (2) 通过构造判定树可以求得的成功情况下的平均查找长度...

    C++ 二分查找法

    C++ 二分查找法

Global site tag (gtag.js) - Google Analytics