`

二分查找之我的理解

 
阅读更多

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

 

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

 

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

 

贴出代码如下:

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));
	}
}

 

 

分享到:
评论

相关推荐

    二分查找算法代码+二分查找算法思想

    二分算法,也称为二分查找或折半查找,是一种在有序数据集中查找特定元素的算法。其基本思想是: 起始时,将数据集视为一个区间,区间包含所有待搜索的元素。 计算区间的中间元素,并将待查找的元素与中间元素进行...

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

    NULL 博文链接:https://chuanwang66.iteye.com/blog/1416430

    二分查找算法代码高级版本+二分查找算法思想

    二分算法,也称为二分查找或折半查找,是一种在有序数据集中查找特定元素的算法。其基本思想是: 起始时,将数据集视为一个区间,区间包含所有待搜索的元素。 计算区间的中间元素,并将待查找的元素与中间元素进行...

    简单二分查找

    适合初学者进行学习,简单明了,容易理解,方便记忆学习

    【Leetcode刷题笔记01】704.二分查找 27.移除元素.md

    二分查找和27.移除元素,记录了详细的题目解析思路以及Java语言的参考代码。 适合人群:学习算法和数据结构的程序员或学生,想要通过LeetCode来提高编程能力的人。 能学到什么:掌握二分查找算法的实现原理;了解双...

    java算法之二分查找法的实例详解

    主要介绍了java算法之二分查找法的实例详解的相关资料,这里提供简单实例帮助大家学习理解这部分内容,需要的朋友可以参考下

    java数据结构之二分查找法 binarySearch的实例

    主要介绍了java数据结构之二分查找法 binarySearch的实例的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下

    15丨二分查找(上):如何用最省内存的方式实现快速查找功能?1

    二分查找的思想非常简单,很多非计算机专业的同学很容易就能理解,但是看似越简单的东西往往越难掌握好,想要灵活应用就更加困难。猜的过程中,你每猜一次,我就会告诉你猜

    数据结构与算法复习(Java):排序、字符串、数组、链表、二分查找、二叉树.zip

    算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...

    二分搜索算法(分治策略)报告.doc

    算法设计与分析实验报告,附已通过源码,供学习参考,共勉♪ 目录摘要如下: 1.问题描述 2.实验目的 3.实验原理 4.实验设计 ...(包括输入格式、算法、输出格式) ...(除了截图外,实验结果还用图表进行了分析) ...

    算法设计-实验二-查找.docx

    查找问题在计算机科学中是一个经典的问题,包括线性查找、二分查找、哈希查找等多种方法。在实际应用中,查找问题具有广泛的研究和应用价值。 在这份资源中,您将学习到查找问题的定义和性质,以及如何使用Python...

    js基本算法:冒泡排序,二分查找的简单实例

    自我理解:一个算法,运行了几次时间复杂度就为多少,如运行了n次,则时间复杂度为O(n)。 1.冒泡排序 解析:1.比较相邻的两个元素,如果前一个比后一个大,则交换位置。 2.第一轮的时候最后一个元素应该是最大的一个...

    计算机二级公共基础知识

    如果一个数据结构不是线性结构,则称之为非线性结构。数组、广义表、树和图等数据结构都是非线性结构。 (2)线性表的顺序存储结构具有以下两个基本特点: ① 线性表中所有元素所占的存储空间是连续的; ② 线性表中...

    PHP二分查找算法示例【递归与非递归方法】

    二分查找采用的方法比较容易理解,以数组为例: ① 先取数组中间的值floor((low+top)/2), ② 然后通过与所需查找的数字进行比较,若比中间值大,则将首值替换为中间位置下一个位置,继续第一步的操作;若比中间值小,...

    二分应用:峰值查找 原理、源码、测试用例

    1. 题目 长度为n的数组nums,请返回任意一峰值的索引。符合以下条件之一i便是峰值的索引。...推论三:推论二也可以也可以理解成分别抛弃[left,mid)和[mid,r)。令mid = left+(r-left)/2,由于r-left&gt;=2,所以left&lt;mid&lt;

    二分查找判定树的构造方法研究及应用 (2012年)

    通过对二分查找的算法进行分析,并结合二分查找判定树的特点,提出一种快速画出二分查找的判定树的方法。该方法较传统方法更加直观,学生更容易理解掌握,而且比传统方法速度更快、效率更高,通过实例验证了提出方法的...

    查找算法的多种方法的源文件集合

    主要是查找的算法及其实例,如,折半查找,还有二叉排序树等。...二分查找是顺序表的查找中的最重要的方法,通过这些程序的运行,能充分理解其实现方法和有关性能,并能借助其判定树结构来加深理解。

    javascript折半查找详解

    折半查找法: 在有序表中,把待查找数据值与查找范围的中间元素值...按照二叉树来理解:中间值为二叉树的根,前半部分为左子树,后半部分为右子树。折半查找法的查找次数正好为该值所在的层数。等概率情况下,约为 log2

    分治法算法实践

    这次的二分查找算法实践,加深了我对二分法的理解。因为书本上有二分法查找的相关内容,我们没出现大问题。问题是出现在数组的定义上。我们一起找,没找到,最后上网查了一下才知道原来是我们数组定义的时候出了错!...

Global site tag (gtag.js) - Google Analytics