什么是算法?

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

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

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

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

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

image.png

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

image.png

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

image.png

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

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

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

image.png

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

相关文章
|
17天前
|
算法
算法题(6)
算法题(6)
23 7
|
17天前
|
算法
算法题(4)
算法题(4)
35 6
|
18天前
|
算法 机器人
算法题(3)
算法题(3)
33 5
|
10月前
|
机器学习/深度学习 存储 算法
01 算法
01 算法
52 0
|
存储 并行计算 算法
FlashAttention算法详解
这篇文章的目的是详细的解释Flash Attention,为什么要解释FlashAttention呢?因为FlashAttention 是一种重新排序注意力计算的算法,它无需任何近似即可加速注意力计算并减少内存占用。所以作为目前LLM的模型加速它是一个非常好的解决方案,本文介绍经典的V1版本,最新的V2做了其他优化我们这里暂时不介绍。因为V1版的FlashAttention号称可以提速5-10倍,所以我们来研究一下它到底是怎么实现的。
510 0
|
机器学习/深度学习 人工智能 算法
秒懂算法 | 尺取法
尺取法(又称为:双指针、two pointers),是算法竞赛中一个常用的优化技巧,用来解决序列的区间问题,操作简单、容易编程。 本篇介绍了尺取法的概念、反向扫描、同向扫描、模板、典型题目。
358 1
秒懂算法 | 尺取法
|
存储 机器学习/深度学习 人工智能
秒懂算法 | 分块算法
本篇内容包括了分块算法的思想的介绍、分块算法复杂度的分析以及相关例题。
323 0
秒懂算法 | 分块算法
|
算法
【算法之初步认识】
【算法之初步认识】
132 0
【算法之初步认识】
|
算法 Java C++
算法题0
第一题:判断数字 给定一个整数 n,请你统计其各位数字中 4 和 7 的出现次数。 如果 4 的出现次数加上 7 的出现次数恰好等于 4 或 7,则输出 YES,否则输出 NO。 例如,当 n=40047 时,4 出现了 2 次,7 出现了 1 次,2+1=3,既不是 4 也不是 7,因此,输出 NO;当 n=7747774 时,4 出现了 2 次,7 出现了 5 次,2+5=7,因此,输出 YES。
146 0
|
设计模式 缓存 算法
算法总结
历经两个月的时间,将算法知识重新梳理完成,整个过程挺累的,每天只能晚上或者周六周日梳理一部分,虽然占用了大量的休息时间,不过整个过程很充实,而且也重新学到了不少东西。