什么是算法?

简介: 当人们提到“算法”一词,往往就会把它们当成专属于“人工智能”的范畴,很多专业的计算机人士也是,提起算法就头疼,不知道如何学习算法,慢慢的对算法就会失去兴趣,算法不仅仅是计算机行业特有的,在我们的生活中也处处存在着算法,算法是专注于解决问题的过程和方法。

当人们提到“算法”一词,往往就会把它们当成专属于“人工智能”的范畴,很多专业的计算机人士也是,提起算法就头疼,不知道如何学习算法,慢慢的对算法就会失去兴趣,算法不仅仅是计算机行业特有的,在我们的生活中也处处存在着算法,算法是专注于解决问题的过程和方法。

既然提到了算法是解决问题的方法,哪方法也是有好有坏的,算法是在特定问题下解决问题的方法,证明一个算法的好坏,就要看它的时间复杂度和空间复杂度。

通过一个实例来说明算法的好坏,假如李四是班长,老师叫李四统计下本班的人数是多少?

李四非常自信的一个、两个、三个的数了起来,然后报告老师,本班总共8人,老师说人数少,可以这样数,然后人数过大,是不是就非常浪费时间了,那你的时间复杂度是不是就大了,想想还有没更好的办法!。

image.png

基于这个想法,可不可以以两个一组,进行来分,最后看下综合是多少组乘于它组的总人数,是不是就是它的总人数,那可不可以以十人一组或者二十人一组呢,这样是不可取的,因为多人一组还是要数的,最后时间复杂度还是要增大的。

image.png

结合以上两个算法可以得出,组的概念还是有用,哪能不能更高效大的方法呢?如果在人数较多的情况下,可不可以按照房间的概念来区分的,假设每个房间可以容纳20人,看最后一个容纳多少人,前面每个房间数乘于容纳的人数再加上最后一个房间容纳的人数之和,就可以得到最终的人数。

image.png

以房间号计算的方式,虽然可以快速计算出结果,但是它所消耗的空间复杂度是大的,反而有点得不偿失的,如果不考虑消耗的内存大小,可以考虑使用这种方式。

思考这样一个问题,如果可以投入一点的成本,是不是可以降低它的时间复杂度和空间复杂度呢?!

其实,如果可以购买一些记事本,每次来校的学生都要进行登记,我们只需要计算记事本的人数和有多少个记事本,是不是可以更快,而且高效的计算出学生的总人数呢?

image.png

以上几种算法都可以达到想要的结果,但是考虑到实际应用的场景以及后期更好的性能输出,还是要考虑它的时间复杂度和空间复杂度作为一个好算法的衡量标准,其次就是他的可读性。

相关文章
|
算法 Go 数据安全/隐私保护
算法视频分享来啦!!
算法视频分享来啦!!
|
2月前
|
自然语言处理 算法 BI
Baum-Welch算法
Baum-Welch算法是一种用于隐马尔可夫模型(HMM)的训练算法,通过期望最大化(EM)框架迭代估计模型参数,直至收敛。该算法主要应用于语音识别、生物信息学和自然语言处理等领域,通过优化初始状态概率、状态转移概率和观测概率,提高模型对观测数据的拟合度。尽管存在局部最优和计算复杂性等挑战,但仍是HMM参数估计的重要工具。
|
4月前
|
算法
算法题(4)
算法题(4)
63 6
|
4月前
|
算法
算法题(9)
算法题(9)
26 4
|
6月前
|
算法 调度 C#
|
算法
转:johnson算法的现实意义
Johnson算法是一种用于解决边数与节点数之间关系为O(n^2)的带权图的最短路径问题的算法。它是一种结合了Dijkstra算法和Bellman-Ford算法的技术,通过使用一个负权重的环检测器来消除负权重的影响。这种算法的时间复杂度为O(n^2+m log n)。
153 1
|
算法
秒懂算法 | 基环树
图论是一个“巨大”的专题,有大量的知识点,有众多广为人知的问题,有复杂的应用场景。 图论算法常常建立在复杂的数据结构之上。
350 0
秒懂算法 | 基环树
|
算法 前端开发 rax
举轻若重,于无声处听惊雷,那些平平无奇的伟大算法
遥想笔者读大学时在技术讨论时多是储如i+=(++i)+(i++)之类的孔乙己式的问题,而最近我们关注的热点要不是删库跑路坐牢的程序员,要不是员工离职倾向分析系统;而反观国外大神的博客,要不就是这种切入点非常简单,但是最终能够升华至编程之道层面的举轻若重的文章,要不就是秀出那些智商碾压的神仙代码,从这个角度上看我们国内的IT技术氛围还有极大的提升空间。
举轻若重,于无声处听惊雷,那些平平无奇的伟大算法
|
算法
A*算法之在U3d下实现简单的自动寻路
算法简介: A搜寻算法俗称A星算法。A算法是比较流行的启发式搜索算法之一,被广泛应用于路径优化领域[。它的独特之处是检查最短路径中每个可能的节点时引入了全局信息,对当前节点距终点的距离做出估计,并作为评价该节点处于最短路线上的可能性的量度。
1289 0
|
算法 搜索推荐 C#

热门文章

最新文章