`

二分查找之我的理解

 
阅读更多

说到查找方法,不得不提到这个二分法查找,这个算法的实现本身不难,但这个思想,二分天下,化繁为简,一下子将数据的查找量砍掉了一半,层层定位,逐步排除不合适的数据,直到最后一个为止。相对以往的从头至尾的遍历,可以说是极大的进步。并且很多算法思想,以及框架设计都是基于此。 

 

二分加递归,简单的代码即可实现超强的功能。

 

但是,二分法如此强大,还有一个原因,它是建立在数据有序的基础上。但是万一数据无序,它就无从下手了。所以,它能工作的前置的条件,有一个强大的排序算法帮它将数据整理为有序。

 

贴出代码如下:

public class BinarySearch {
	public static int binarySearch(int[] a, int key) {
		if (a.length == 0)
			return -1;
		int first = 0;
		int last = a.length - 1;
		int mid;
		while (first <= last) {
			mid = (first + last) / 2;
			if (a[mid] == key)
				return mid;
			if (a[mid] > key)
				last = mid - 1;
			if (a[mid] < key)
				first = mid + 1;
		}
		return -1;
	}

	public static void main(String[] args) {
		int[] a = { 1, 3, 4, 5, 8, 7, 9, 11, 15 };
		System.out.println(binarySearch(a, 9));
	}
}

 

 

分享到:
评论

相关推荐

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

    在深入理解二分查找之前,我们需要先明确几个基本概念: 1. **有序数组**:二分查找的前提是数据已经按照升序或降序排列。对于无序数组,二分查找无法直接应用。 2. **中间元素**:每次查找都会选取数组的中间位置...

    VB 二分查找

    在VB(Visual Basic)中,实现二分查找需要理解基本的逻辑控制和数组操作。下面将详细介绍VB中的二分查找算法及其应用。 ### 1. 基本概念 二分查找适用于已排序的数组或列表。其原理是每次都比较中间元素与目标值...

    二分查找算法

    二分查找算法是一种在有序数组中寻找特定元素的搜索算法,具有高效的时间复杂度,是计算机科学中的一个重要概念。...对于学习计算机科学的学生和专业开发者来说,理解和应用二分查找是必备的技能之一。

    二分查找解题

    本篇文章将深入探讨二分查找算法的递归实现,并结合大量的注释帮助理解。 首先,我们要明白二分查找的基本步骤: 1. 找到数组的中间元素。 2. 如果中间元素就是目标值,查找结束。 3. 如果目标值小于中间元素,...

    二分查找办法

    同时,了解这两种实现方式有助于我们更好地理解和改进二分查找算法,对于提升编程技能和解决复杂问题非常有帮助。 在Lecture7_BinarySearch1这个文件中,可能包含了关于这两种二分查找方法的详细讲解、示例代码和...

    flash as3 二分查找动画演示

    通过这个动画演示,学习者不仅可以了解二分查找算法的理论,还能通过实践加深理解,体验到编程解决问题的过程,这对于提升编程思维和技能非常有益。同时,这样的教学方式也使得复杂的算法概念变得生动有趣,易于接受...

    C++ 二分查找法

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

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

    首先,我们需要理解二分查找的适用条件:输入数据必须是有序的。对于无序数据,二分查找无法发挥其优势。在本实验中,为了满足这一条件,我们先对数据进行排序。实验中使用Java的`Arrays.sort()`函数对随机生成的...

    二分查找算法 VC++

    首先,我们要理解二分查找的工作原理。假设我们有一个从小到大排列的数组,我们要找一个特定的元素x。步骤如下: 1. 计算数组的中间索引 mid = (left + right) / 2。 2. 如果中间元素正好是x,那么查找结束,返回...

    二分查找算法FLASH演示

    综上所述,二分查找算法是数据结构与算法学习中的重要概念,理解其原理并能熟练运用,对于提升编程能力大有裨益。通过提供的"二分查找.swf"文件,初学者可以通过动画演示更直观地理解和掌握这一算法。

    Java二分查找示例代码

    在编程领域,二分查找(Binary Search)是一种高效地在有序数组或集合中搜索特定元素的算法。这个算法充分利用了数组的线性特性,通过不断缩小搜索范围来找到目标值。下面我们将深入探讨Java实现二分查找的具体步骤...

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

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

    C++ 二分查找的实现

    ### C++ 二分查找的实现 #### 一、引言 在计算机科学中,**二分查找**(也称为**折半查找**)是一种在有序数组中查找特定元素的有效算法。...希望本文能帮助读者更好地理解二分查找算法及其在C++中的实现方法。

    二分查找 杨辉三角 数组便利

    从给定的代码片段中,我们可以提取出三个主要的知识点:二分查找算法、杨辉三角的生成以及一维和二维数组的操作。下面将详细解释这些知识点。 ### 二分查找算法 二分查找(Binary Search)是一种在有序数组中查找...

    一种改进的二分查找算法

    从提供的文件中,可以挖掘出关于二分查找算法以及其改进方法的详细知识点。下面对这些知识点进行详细阐述: 首先,二分查找算法是一种在有序数组中查找特定元素的高效算法。它通过比较数组中间位置的值与目标值的...

    二分查找之网易笔试题

    在准备这类笔试题时,除了理解基础的二分查找算法外,还需要考虑如何根据题目需求进行调整,以及如何优化算法以适应不同的数据结构和场景。同时,编写清晰、可读性强的代码也是重要的评价标准,因为这反映了编程能力...

    Hash查找、二分查找c语言关键字个数

    在实际应用中,理解并掌握哈希查找和二分查找的原理及优化方法对于提高程序性能至关重要。哈希查找适用于大规模数据的快速查找,而二分查找则适用于有序数据集。两者在本项目中结合使用,既实现了高效的查找,又能...

    二分查找算法的C语言版

    ### 二分查找算法的C语言实现 #### 算法概述 二分查找算法(Binary Search)是一种在有序数组中查找特定元素的高效算法。它的工作原理是将目标值与数组中间位置的元素进行比较,如果相等,则查找成功;如果不相等,...

    java二分查找算法

    ### Java二分查找算法知识点详解 #### 一、二分查找算法概述 二分查找算法是一种在有序数组中查找特定元素的搜索算法。...对于开发者来说,理解和掌握二分查找算法的实现细节对于提高程序性能具有重要意义。

    C+++版二分查找

    根据给定的信息,本文将详细解释“C++版二分查找”的实现原理、代码解析以及相关的计算机科学背景知识。 ### C++版二分查找 ...这些知识对于理解和掌握二分查找算法及其在实际编程中的运用具有重要的意义。

Global site tag (gtag.js) - Google Analytics