击破算法
1.什么是算法
算法,乍一听好像是很高深莫测的东西。是计算的方法?是比数学题还难的计算?其实并不是大家想象的那样神秘。接下来大家听我一说马上就明白了
算法:解决问题的步骤。(这些步骤告诉计算机应该按照什么顺序执行一些任务,以达到特定的目标)
2.算法的特性
- 输入输出:有零个或多个输入,但至少有一个或多个输出。想象一项任务我们可以偷偷白 嫖,但我们不能没有成果吧,这谁受得了。我们可以不努力,但不能没果!!!
- 有穷性:在执行完一定步骤后自动结束,不能陷入无限循环。你都不想天天上学,怎么能让 计算机无限工作呢。体贴体贴我们的脆脆鲨计算机吧!
- 确定性:不会出现二义性。咱说话要目的明确,不要让别人困惑。当然写程序也不能把计算 机搞懵了,不然他会崩溃的!(计算机:我要发声)
- 可行性:能够在合理的时间和资源范围内解决特定问题。
3.时间复杂度&空间复杂度
1.什么是时间复杂度
时间复杂度:时间复杂度并不直接表示具体的运行时间,而是表示随着输入规模的增加,算法运行时间的增长趋势。比如用一个函数模型来描述
2.表示方法——大O (O_O)!
推导步骤:
- 用1表示常数
- 只保留最高阶
- 最高阶系数改为1
懂了没?O? 没懂就看下面例子吧
懂了就张大嘴吧跟着我读:O_O ~ O_O哦哦哦哦哦哦哦~
3.常见时间复杂度推导
- 常数阶
- 线性阶
在了解了for循环的执行顺序后我才明白为什么for循环会执行n+1次。如果你也有同样疑问,不妨跳转我另一篇文章了解一下。
- 对数阶
- 平方阶
常见的时间复杂度:(从上到下左到右时间耗费增加)
4.空间复杂度
空间复杂度:用来衡量一个算法在运行过程中所需的内存空间大小的概念。与时间复杂度类似,空间复杂度也关注随着输入规模的增加,算法所使用的内存空间的增长趋势。
请允许我唠叨几句
学起来可能很痛苦。但是学都学了,就认真学学呗。万一真学会了岂不是赚到了。
坚持下去,会有收获的,不能够每次都想零输入,有一个或多个输出吧。(临时抽问,以上标黄的是算法的什么特性,嘿嘿,写篇文章见哦)
不见不散~