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

二分查找

阅读更多
接上回“分治法”

二分查找从实现上可以分为递归和非递归两种形式, 其算法的复杂度为 |_log n_| + 1

代码简单易懂:
public class BSearch {

	private static int[] s = { 1, 2, 3, 5, 8, 11, 21, 188, 211 };

	public static void main(String[] args) {
		System.out.println(bSearchRecursion(s, 0, s.length - 1, 11));
		System.out.println(bSearchNonRecursion(s, 0, s.length - 1, 11));
	}
	
	/**
	 * 递归
	 */
	private static int bSearchRecursion(int[] s, int low, int high, int key) {
		int mid = (low + high) / 2;
		if(s[mid] == key) return mid;
		else if(s[mid] > key) return bSearchRecursion(s, low, mid - 1, key);
		else return bSearchRecursion(s, mid -1, high, key);
	} 

	/**
	 * 非递归
	 */
	private static int bSearchNonRecursion(int[] s, int low, int high, int key) {
		while(low <= high) {
			int mid = (low + high) / 2;
			if(s[mid] == key) return mid;
			else if(s[mid] > key) high = mid - 1;
			else low = mid + 1;
		}
		
		return -1;
	}
}


由于二分查找只限于顺序存储的有序表, 对于插入、删除操作苦难。 所以其使用于不经常变动且查找频繁的有序表。

分享到:
评论

相关推荐

    二分查找_测试

    二分查找,也被称为折半查找,是一种在有序数组中查找特定元素的搜索算法。它的基本思想是将数组分成两半,然后比较中间元素与目标值,根据比较结果决定是在左半部分还是右半部分继续查找。这个过程会一直重复,直到...

    二分查找算法

    二分查找算法 二分查找算法是一种高效的查找算法,适用于已经排好序的数组或链表中查找特定的元素。该算法的时间复杂度为O(log n),远远优于顺序查找算法的O(n)。 二分查找算法的基本思想是将数组或链表分成两个...

    二分查找算法PPT课件

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

    flash as3 二分查找动画演示

    在这个"flash as3 二分查找动画演示"项目中,我们看到的是一个用Flash AS3实现的二分查找算法的可视化教程。 二分查找(Binary Search)是计算机科学中一种高效的数据检索方法,适用于已排序的数组或列表。它的基本...

    二分查找最简单教程

    二分查找是一种在有序数组中查找特定元素位置的算法,它利用数组元素排序的特性,通过比较数组中间元素与目标值的大小,将查找区间缩半来加快查找速度。该算法适用于有序集合,能够将时间复杂度从线性查找的O(n)降低...

    算法分析与设计-实验二 二分查找实验报告.docx

    二分查找算法是一种高效的数据搜索方法,主要应用于已排序的序列。它的基本思想是通过不断地将待搜索区域减半来快速定位目标值。这个过程基于分治策略,将大问题分解为更小的子问题来解决。在二分查找算法中,每次...

    C++ 二分查找法

    ### C++ 二分查找法详解 在计算机科学领域,数据结构与算法是核心课程之一,其中二分查找法(Binary Search)是一种高效的查找技术,尤其适用于有序数组或列表的搜索场景。本文将深入探讨C++中实现二分查找法的具体...

    二分查找算法流程图流程图举例

    二分查找算法是一种在有序数组中查找特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是目标值,则搜索结束;如果目标值大于或小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且...

    java二分查找实现

    Java 二分查找实现 Java 二分查找是搜索有序数组中某个元素的最常用算法之一。它的实现原理是将数组分成两个部分,然后在其中一个部分继续进行搜索,直到找到目标元素或确定目标元素不存在。下面将详细介绍 Java 二...

    二分查找解题

    二分查找,也被称为折半查找,是一种在有序数组中高效地查找特定元素的搜索算法。这个算法的主要思想是利用数组的有序性,通过不断缩小查找范围,直到找到目标值或者确定目标值不存在为止。本篇文章将深入探讨二分...

    VB 二分查找

    二分查找,也称为折半查找,是一种在有序数组中搜索特定元素的高效算法。它主要利用了数组的线性特性,通过不断缩小搜索范围来快速定位目标值。在VB(Visual Basic)中,实现二分查找需要理解基本的逻辑控制和数组...

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

    折半查找算法,也称为二分查找算法,是一种在有序序列中快速定位特定元素的技术。由于其高效性和广泛的适用性,二分查找在计算机科学领域得到了广泛的应用,尤其在处理大数据量的有序数据时,其优势更为明显。本文将...

    查找算法集(顺序查找、二分查找、插值查找、动态查找)

    在给定的代码中,二分查找算法函数sq_Dichotomy_Search0实现了有序数组的二分查找。它的参数包括被查找数组、数组元素个数和被查找的关键值。函数返回的值是目标元素在数组中的下标,如果没有找到则返回-1。 插值...

    二分查找办法

    二分查找,也被称为折半查找,是一种在有序数组中高效搜索特定元素的算法。它以其高效率和在适当数据结构中的广泛适用性而闻名。本文将深入探讨两种不同的二分查找实现:健忘版和识别版,并分析它们的效率差异。 ...

    查找算法:二分查找、顺序查找

    这里我们将深入探讨两种常见的查找算法:二分查找和顺序查找。 **一、顺序查找** 顺序查找是最基础的查找算法之一。它的工作原理是从数据集(如数组或列表)的第一个元素开始,逐个比较目标值与当前元素,直到找到...

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

    在Java编程中,文件读取、数组操作、选择排序以及二分查找是常见的编程任务,它们涉及了IO流、数据结构和算法等多个方面。以下是这些知识点的详细解释: 1. **文件读取**:Java提供了丰富的IO流类库用于读取文件。...

    二分查找算法 VC++

    二分查找算法,也称为折半查找,是计算机科学中一种高效的搜索算法,尤其适用于已排序的数据集合。这种算法的基本思想是将数据集分为两半,每次比较中间元素与目标值,根据比较结果缩小搜索范围,直至找到目标值或者...

    深入理解二分查找(一、二分查找及其变体)

    **二分查找(Binary Search)**是一种在有序数组中寻找特定元素的搜索算法。它的基本思想是通过比较中间元素与目标值,不断缩小搜索范围,直到找到目标元素或者确定其不存在。二分查找的时间复杂度为O(log n),在大...

Global site tag (gtag.js) - Google Analytics