首页 > 编程知识 正文

java用二分法查找数字,二分查找图解

时间:2023-05-03 15:49:18 阅读:128877 作者:2629

二分搜索又称折半搜索,具有比较次数少、搜索速度快、平均性能好的优点; 缺点是核对表规则,插入删除困难。 因此,混叠搜索方法适于在不频繁改变的情况下搜索频繁有序列表。 首先,假设表中元素按升序排列,将表中间记录的关键字与检索关键字进行比较,两者相等时,检索成功; 否则,使用中间位置记录将表分为前、后两个子表。 如果中间位置记录的关键字大于搜索关键字,则进一步搜索前面的子表。 否则,进一步搜索以下子表: 重复上述过程,直到找到满足条件的记录,并且搜索成功或子表不存在。 此时搜索不会成功。

Bentley在他的《Writing Correct Programs》书中写道,90%的计算机专家在两个小时内写不出完全正确的二分搜索算法。 问题的关键是准确地建立各搜索范围边界和终止条件的确定,准确地归纳奇偶数的各种情况,实际组织起来表明其具体算法是直观的。

折半搜索法的优点是比较次数少、搜索速度快、平均性能好,其缺点是核对表规则,插入删除困难。 因此,混叠搜索方法适于在不频繁改变的情况下搜索频繁有序列表。

算法步骤的说明

首先,决定搜索区间整体的中间位置mid=(leftright )/2

将选中关键词值与中间位置关键词值进行比较;

如果相等,则搜索成功

如果大于,则在后面(右)的一半区域继续进行折回搜索

如果小于,则继续在前(左)的一半区域进行往返搜索

对确定的缩小区域,再按对开式,重复上述步骤。

最后,得出结果。 要么搜索成功,要么搜索失败。 半拉的存储结构以一维数组存储。

减半搜索算法示例

对于给定数字序列{3、5、11、17、21、23、28、30、32、50、64、78、81、95和101},通过迭代查找算法查找关键字值为81的数据元素。

半搜索的算法研究:

好处:

ASLlog2n,即每次比较时,搜索范围都会缩小一半。 log2n次护理即可完成搜索过程。

缺点:

由于需要有序,查找数列需要有序,按大小对所有数据元素进行排序是一项非常耗时的操作。 另外,不方便顺序存储结构的插入、删除操作。

考虑事项:

一次比较是否可以舍弃更多的部分,即经过一次比较,通过缩小搜索范围,来提高效率。

可以考虑将两种方法(按顺序和对折)结合起来。 也就是说,能否把按顺序找简单的地方和对半找高效的地方结合起来,提高效率呢? 其实这就是块搜索的算法思想。

Arrays提供的二分搜索功能:

binarySearch ()方法的返回值如下:

1 .如果找到关键字,则返回值是关键字在数组中的位置索引,索引从0开始

2、找不到关键字时,返回值为负插入点值。 插入点值是第一个大于关键字的元素在数组中的位置索引,该位置索引从1开始。

publicstaticvoidmain (string [ ] args ) int [ ] arr={ 1、3、5、6、4、7、12、25、13 };

系统. out.println (arrays.tostring (arr ) ); //必须使用二分搜索功能,先排序

Arrays.sort(arr;

系统. out.println (arrays.tostring (arr ) ); intnum=Arrays.Binarysearch(ARR,12 );

系统. out.print (num;

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。