14天阅读挑战赛
努力是为了不平庸~
算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法!记录下那些努力时刻(算法学习知识点/算法题解/遇到的算法bug/等等),在分享的同时加深对于算法的理解,同时吸收他人的奇思妙想,一起见证技术er的成长~
🥲 🥸 🤌 🫀 🫁 🥷 🐻❄️🦤 🪶 🦭 🪲 🪳 🪰 🪱 🪴 🫐 🫒 🫑 🫓 🫔 🫕 🦤 🪶 🦭 🪲 🪳 🪰 🪱 🐻❄️ 🫐 🫒 🫑 🫓 🫔 🫕
♔博主昵称:�欢快↑㎡
🕍博客主页:�欢快↑㎡的博客_CSDN博客-学习注意点杂记,BUG集,安装教程领域博主
🥗感谢点赞🤞🏻评论
⚇很方便的在线编辑器:Lightly
相信吧!🤜🏻我们很优秀,还可以更加优秀,加油!🌼让我们一起在写作中记录巩固学习吧!
为什么要学习算法
不乏有一些算法爱好者,比较喜欢算法
有些算法可以给我们的实际问题带来更加简洁快速的的得到我们想要的结果,可以优化性能(当然任何一种解决问题的方案都是算法,但是算法与算法之间在适应不同场景会有不同的性能)
对于工作,知道一些算法是大有裨益的,对于从事架构师大数据方面的对算法要求会更加高一些
如何学习算法
趣味算法的作者小玉老师告诉我们,学习算法,要先去了解算法,等对算法有了一定的熟悉度,我们再去实践,出错的效率会更加少,反之,对于初学者来说,出错多了就容易打击自信心。
了解算法可以通过书籍或者视频。
然后可以刷题(想要在算法方面比较厉害,可以做一个两年的规划)
刷题有很多网站,诸如力扣、牛客网等(参加蓝桥杯比赛也是不错的,会有在线的编程练习)
也可以参加比赛,学生和上班族都可以参加相应的比赛
算法知识点
算法的特性、算法的复杂度
算法的特性
- 有穷性
- 可行性
- 确定性
- 输入和输出
好的算法的特性
- 正确性
- 易读性
- 健壮性
- 高效性
- 低存储性
其中低存储是算法所需要的存储空间大小(被称为空间复杂度)
算法的复杂度分类
- 时间复杂度
- 空间复杂度
算法例题
写一个算法求出以下序列的和
解题思路一
我们可以先写一个-1的n次方的方法(pow方法),然后用for循环一直求和,如图:
解题思路二
如图所示,我们将其两两组合,其和为0,我们只需要判断n是奇数还是偶数,是偶数则和为0,奇数则和为-1
代码如下
对比
由此可见解题思路一的算法会被循环执行n次(算法复杂度为O(n)),二解题思路二的算法只会被执行1次(一般来说执行一次效率也会越高)(算法复杂度为O(1))