千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > Java中的二进制搜索:递归、迭代和Java集合

Java中的二进制搜索:递归、迭代和Java集合

来源:千锋教育
发布人:syq
时间: 2022-09-30 14:39:09 1664519949

  Java中的线性搜索一直是在数组中查找元素的首选方法。它按顺序搜索数组的每个元素,并且非常容易实现。但是,当所讨论的数组包含数万个元素时,线性搜索的缺点是显而易见的。在这种情况下,Binary Search实现的“分而治之”方法对于具有时间和空间复杂性的程序员来说更加有效和可取。

Java中的二进制搜索

  二进制搜索

  在二进制搜索中,数组被反复分成两半,直到找到键(正在搜索的元素)。分割是虚拟的,即保持数据的完整性。每次迭代时,数组的中间值都是集中的。如果该值等于我们正在寻找的键,则循环或递归函数终止。否则,它会继续循环。如果中间值大于键,则该函数将焦点放在数组的前半部分,反之亦然。重复此过程,直到找到密钥或循环访问整个阵列。

  线性搜索和二进制搜索之间的区别

7

  二进制搜索算法

  二进制搜索的算法如下。

  确定阵列的第一个点和最后一个点。每次迭代时,这些点将根据数组和正在搜索的键进行调整。

  循环访问数组并比较当前第一个点和最后一个点之间的中间值。在第一次迭代中,第一个和最后一个变量将与数组中的实际变量相同。

  如果键大于中间值,则该值的索引将存储在新的“First”变量中。

  如果键小于中间值,则该值的索引将存储在“Last”变量中。

  重复此条件,直到以下两个条件之一变为真:

  找到密钥。

  已迭代整个数组。

  下面给出了迭代二进制搜索和递归二进制搜索的代码。

  迭代二进制搜索

  下面给出了使用迭代方法进行二进制搜索的代码。

8

  递归二进制搜索

  下面给出了使用递归的二进制代码。

9

  时间复杂度

  随着每次迭代的传递,数组(即搜索空间)被拆分一半。每次迭代“m”后,搜索空间的大小将更改为N / 2m。在最坏的情况下,我们只会在数组的一个远端留下一个元素。此时,二进制搜索的复杂性将是 k = log2N。线性搜索的时间复杂度为O(N),这导致二进制搜索的速度比O(log2N)复杂度快得多。这是使用二进制搜索而不是线性搜索的主要好处。

  空间复杂性

  二进制搜索使用三个不同的变量 - 开始,结束和中间。这三个变量被创建为指向数组索引的内存位置的指针。因此,二进制搜索在空间方面非常有效。迭代二进制搜索的空间复杂度为 O(1)。对于递归实现,它是 O(log N)。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT