什么是算法?

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

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

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

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

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

image.png

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

image.png

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

image.png

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

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

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

image.png

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

相关文章
|
算法 C++ 计算机视觉
区域生长算法 C++实现
在比赛和项目中用opencv用多了,就会发现很多opencv没有实现的算法,其中一些还是十分常用,在教科书上经常出现的。作为一个弱鸡,有的简单的算法能够自己实现(比如本文所要讲的),有的写到一半就打出GG,有的直接就下不了手。
1952 0
|
3月前
|
算法
算法题(1)
算法题(1)
148 62
|
3月前
|
算法
算法题(5)
算法题(5)
28 11
|
3月前
|
算法
算法题(8)
算法题(8)
17 4
|
5月前
|
自然语言处理 算法 BI
Baum-Welch算法
Baum-Welch算法
|
传感器 人工智能 算法
图象处理算法(介绍)
图象处理算法(介绍)
|
机器学习/深度学习 存储 算法
01 算法
01 算法
61 0
|
算法
蚂群算法
蚂群算法
97 0
蚂群算法
|
算法 索引
紫书之子集生成三种算法
紫书之子集生成三种算法
紫书之子集生成三种算法
|
算法 C++
下一篇
DataWorks