说到查找方法,不得不提到这个二分法查找,这个算法的实现本身不难,但这个思想,二分天下,化繁为简,一下子将数据的查找量砍掉了一半,层层定位,逐步排除不合适的数据,直到最后一个为止。相对以往的从头至尾的遍历,可以说是极大的进步。并且很多算法思想,以及框架设计都是基于此。
二分加递归,简单的代码即可实现超强的功能。
但是,二分法如此强大,还有一个原因,它是建立在数据有序的基础上。但是万一数据无序,它就无从下手了。所以,它能工作的前置的条件,有一个强大的排序算法帮它将数据整理为有序。
贴出代码如下:
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
二分算法,也称为二分查找或折半查找,是一种在有序数据集中查找特定元素的算法。其基本思想是: 起始时,将数据集视为一个区间,区间包含所有待搜索的元素。 计算区间的中间元素,并将待查找的元素与中间元素进行...
适合初学者进行学习,简单明了,容易理解,方便记忆学习
二分查找和27.移除元素,记录了详细的题目解析思路以及Java语言的参考代码。 适合人群:学习算法和数据结构的程序员或学生,想要通过LeetCode来提高编程能力的人。 能学到什么:掌握二分查找算法的实现原理;了解双...
主要介绍了java算法之二分查找法的实例详解的相关资料,这里提供简单实例帮助大家学习理解这部分内容,需要的朋友可以参考下
主要介绍了java数据结构之二分查找法 binarySearch的实例的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
二分查找的思想非常简单,很多非计算机专业的同学很容易就能理解,但是看似越简单的东西往往越难掌握好,想要灵活应用就更加困难。猜的过程中,你每猜一次,我就会告诉你猜
算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...
算法设计与分析实验报告,附已通过源码,供学习参考,共勉♪ 目录摘要如下: 1.问题描述 2.实验目的 3.实验原理 4.实验设计 ...(包括输入格式、算法、输出格式) ...(除了截图外,实验结果还用图表进行了分析) ...
查找问题在计算机科学中是一个经典的问题,包括线性查找、二分查找、哈希查找等多种方法。在实际应用中,查找问题具有广泛的研究和应用价值。 在这份资源中,您将学习到查找问题的定义和性质,以及如何使用Python...
自我理解:一个算法,运行了几次时间复杂度就为多少,如运行了n次,则时间复杂度为O(n)。 1.冒泡排序 解析:1.比较相邻的两个元素,如果前一个比后一个大,则交换位置。 2.第一轮的时候最后一个元素应该是最大的一个...
如果一个数据结构不是线性结构,则称之为非线性结构。数组、广义表、树和图等数据结构都是非线性结构。 (2)线性表的顺序存储结构具有以下两个基本特点: ① 线性表中所有元素所占的存储空间是连续的; ② 线性表中...
二分查找采用的方法比较容易理解,以数组为例: ① 先取数组中间的值floor((low+top)/2), ② 然后通过与所需查找的数字进行比较,若比中间值大,则将首值替换为中间位置下一个位置,继续第一步的操作;若比中间值小,...
1. 题目 长度为n的数组nums,请返回任意一峰值的索引。符合以下条件之一i便是峰值的索引。...推论三:推论二也可以也可以理解成分别抛弃[left,mid)和[mid,r)。令mid = left+(r-left)/2,由于r-left>=2,所以left<mid<
通过对二分查找的算法进行分析,并结合二分查找判定树的特点,提出一种快速画出二分查找的判定树的方法。该方法较传统方法更加直观,学生更容易理解掌握,而且比传统方法速度更快、效率更高,通过实例验证了提出方法的...
主要是查找的算法及其实例,如,折半查找,还有二叉排序树等。...二分查找是顺序表的查找中的最重要的方法,通过这些程序的运行,能充分理解其实现方法和有关性能,并能借助其判定树结构来加深理解。
折半查找法: 在有序表中,把待查找数据值与查找范围的中间元素值...按照二叉树来理解:中间值为二叉树的根,前半部分为左子树,后半部分为右子树。折半查找法的查找次数正好为该值所在的层数。等概率情况下,约为 log2
这次的二分查找算法实践,加深了我对二分法的理解。因为书本上有二分法查找的相关内容,我们没出现大问题。问题是出现在数组的定义上。我们一起找,没找到,最后上网查了一下才知道原来是我们数组定义的时候出了错!...