java解高次方程二分法,什么是二分法解方程分析(二分法的算法步骤)

如何提升系统的性能,这是工作中经常会提到的一个问题,而要解决这个问题,需要我们掌握很多内容,比如算法就是其中很重要的一个部分。

无论是在最初我学习编程开发的阶段,还是后来的工作中,经常会有人提醒我要多了解下算法方面的内容,可惜这个行业的加班情况占用了我太多的时间。几天前有朋友送了我一般关于算法的图书,而且内容通俗易懂,所以最近都在学习这些内容,但一个人的学习过程太过枯燥,所以就想自己的一些收获分享给大家,同时也欢迎大家提出自己的问题和看法。

这一次先来给大家介绍下关于编程中二分法的使用,其实关于二分法这个概念,在高中的时候老师就曾经讲到过,不过当时觉得这些太过深奥,而且没有办法实际操作,学会了大概也是没有用处的,可这本图书的第一章就是关于二分法的,现在想想,学校学习的那些理论也不都是无用的吧,只是我们暂时没有机会碰到使用的场景罢了。

二分法概念

什么是二分法呢?时过境迁,我已经想不起高中时候的老师是如何描述这个概念了,而且看完整个章节之后,也没有发现关于这个概念的具体描述,无奈只好求助搜索引擎,可惜得到的答案让我大失所望,在搜索引擎中,只有简单的几行字,二分法是一种算法,唉,既然无法用一句话来描述它,这里也只好借助一个场景为大家介绍下我所了解到的二分法了。

假设有这样一个数组,它的内容总共有100个,而且严格按照从 1 到 100的顺序排列:

701352.html

现在,我们要求从这个数组中找到值是28 的数组项,按照我们对数组的了解,这个数值应该是在数组的第 27 项(因为编程中,数组索引从 0 开始),按照正常的情况,我们如果要查找 28 这个数值的话,那么应该从1或者 100 的位置开始查找,直到找到 28 这个数值位置,这样依赖我们需要查找28次,但是采用二分法去查找的话,查找的次数会大大减少,它是以数组的中间位置的数值作为参考,然后判断,之后再根据比较的结果确定下一个比较的中间数值:

701352.html

这样我们查找的次数由28次变成了6次,因为查找次数的减少,所以相应的速度就会得到提升,这就是二分法的用途了。

二分法实现

刚才为大家简单的介绍了下二分法的概念,那么到底在开发中如何使用呢?下边就结合具体的代码为为大家解释下二分法的使用。首先,我们现在创建一个数组,并对这个数组进行初始化处理,将 1 到 100 的数字放到这个数组中,具体实现的方法如下:

701352.html

接下来,我们依然和上述场景中一样,要求查找到这个数组中值为 28 的数组项并输出它的所谓位置,按照常规的操作我们会使用如下的代码实现:

701352.html

就像我们在开始位置描述的那样,采取这种方法简单易懂,但是查找的次数很多,那么使用二分法如何实现呢?这里同样截取了一段代码供大家参考:

701352.html

因为数组的内容实在是太小了,很难计算出各自消耗的时间,但是通过断点调试不难发现,使用第二种方式,查找的次数会大大减少,显然二分法在查找方法比普通的查找方式具备更大的优势。

其实要理解这种方法并不是很困难,在现实生活中这种方法应用也很广泛,比如我们在使用英语词典的时候,如果单词的开头字母是 A 的话,那么就从开始位置查找,如果字母是 K或者 M的话,我们会从字典的中间开始查找,当翻到字母是 N 的时候,我们会往前翻一点就可以找到 M 了,是不是和刚才介绍的二分法很相似呢?但是也不难发现这种方法的使用需要满足一个前提,就是其中的内容必须是按照一定的顺序排列的,否则难以发挥作用。

关于二分法的内容就为大家介绍到这里,但是依然存在一些疑问,在大多时候效率高的方法往往需要耗费一些其他的资源,比如数据库中的索引就是这样,那么二分法的使用是否也存在这方面的问题呢?在一般方法和二分法之间实际工作中应该如何选择?只有搞清楚这些问题才可以在工作中应用自如,不知道您在这方面有什么看法呢?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值