首页 > 编程知识 正文

计算方法二分法例题,JAVA二分法

时间:2023-05-04 10:33:48 阅读:140485 作者:1970

如何提高系统性能是工作中经常提到的问题,但要解决这个问题,需要掌握很多内容,如算法等。

无论是最初学习编程开发的阶段,还是之后的工作,都经常被提醒要更多地了解算法的内容,可惜这个行业的加班情况占用了我太多的时间。 前几天,朋友给我寄来了一本关于算法的一般书。 而且因为内容简单易懂,最近在学习这些内容,但是一个人的学习过程太无聊了,所以想和大家分享自己的收获。 另外,也欢迎提出自己的问题和意见。

这次首先介绍一下二分法在编程中的使用。 其实关于二分法这个概念,高中的时候老师就说过。 但是当时,我觉得这些太深奥了,也不能实际操作,学了大概也没用。 但是这本书的第一章是关于二分法的。 现在想想,在学校学到的理论不是都没用吗? 只是,我们暂时没有机会遇到使用的场面。

二分法概念

二分法是什么呢? 随着时间的推移,我再也想不起来高中时代的老师是怎么解释这个概念的了。 而且,即使看了整章,也没有找到关于这个概念的具体说明。 我没办法,只好求助于搜索引擎,但遗憾的是得到的答案很失望。 在搜索引擎中,只有简单的几行,二分法就是算法。 啊,一言难尽,在此也不得不借用一下我所知道的介绍二分法的场面。

假设有这样的数组。 其内容共有100个,严格来说是按照从1到100的顺序排列的。

这里,要求从这个数组中找到值为28的数组项。 正如你对数组所知道的,这个数值应该在数组的第27个。 因为在编程中,数组索引从0开始。 通常,寻找数值28时,需要从1或100的位置开始寻找,直到找到数值28的位置为止,需要寻找28次。 但是,用二分法找的话,找的次数会大幅减少。 参考数组中间位置的数值进行判断,根据比较的结果确定下一个比较的中间数值。

这样,我们的寻道次数从28次变成了6次。 因为寻道次数减少了,所以速度相应地加快。 这就是二分法的用途。

二分法实现

我刚才简单介绍了二分法的概念,在开发中是怎么使用的呢? 下面结合具体代码说明二分法的使用。 首先,创建一个数组,初始化此数组,并将1到100之间的数字放入此数组中。 具体的实施方法如下。

然后,与上述场景一样,需要找到此数组中值为28的数组条目并将其输出的所谓位置。 在常规操作中,使用以下代码实现:

正如我们在开头说明的那样,采取这个方法简单易懂,但是找的次数很多,用二分法怎么实现呢? 这里也截取了代码作为参考:

因为数组的内容太小,很难计算各自所需的时间。 但是,如果使用断点进行调试,您会发现使用第二种方法会大大减少搜索次数。 很明显,二分法在检索方法上比普通的检索方法有更大的优势。

其实,理解这个方法并不是很难。 在现实中也被广泛使用。 例如,我们使用英语词典时,如果单词的开头字母是a,就从开始位置开始找。 如果文字是k或m的话,从词典的中间开始找。 如果文字是n的话,稍微往前翻就能找到m。 和刚才介绍的二分法很不相似吗? 但是,也很容易发现,要使用这种方法,必须满足内容必须按一定顺序排列才能发挥作用的前提。

关于二分法的内容已经介绍到这里了,但仍然存在疑问。 在许多情况下,高效的方法经常需要其他资源,就像数据库中的索引是这样,二分法的使用也有问题吗? 在一般方法和二分法之间的实际工作中应该如何选择? 只有把这些问题弄清楚才能应用于工作中,你在这方面是怎么看的呢?

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