type
status
date
slug
summary
tags
category
icon
password

算法

算法是指对特定问题求解步骤的一种描述。
它不依赖于任何一种语言,既可以用自然语言、程序设计语言(C、C++、Java、Python等)描述,也可以用流程图、框图来表示。采用伪代码来描述算法,“伪代码”介于自然语言和程序设计语言之间,它更符合人们的表达方式,容易理解,但不是严格的程序设计语言。
 
算法特性
  1. 有穷性:算法是由若干条指令组成的有穷序列,总是在执行若干次后结束,不可能永不停止。
  1. 确定性:每条语句有确定的含义,无歧义。
  1. 可行性:算法在当前环境条件下可以通过有限次运算实现。
  1. 输入输出:有零个或多个输入,一个或多个输出。
好的算法标准
  • 正确性 算法能够满足具体问题的需求,程序运行正常,无语法错误,能够通过典型的软件测试,达到预期的需求。
  • 易读性 算法遵循标识符命名规则,简洁易懂,注释语句恰当适量,方便自己和他人阅读,便于后期调试和修改。
  • 健壮性 算法对于非法数据和操作应该有较好的反映和处理。
  • 高效性 高效性是指算法运行效率高,即算法运行所消耗的时间短。
  • 低存储性 低存储性是指算法所需要的存储空间低。
 

时间复杂度

时间复杂度:算法运行需要的时间,一般将算法的执行次数作为时间复杂度的度量标准。
notion image
 
时间复杂度:渐进上界(最坏情况),渐进下界(最好情况),渐进精确界(逼近的方式).
notion image
notion image
不是每个算法都能直接计算次数。
notion image
在计算任何算法的时间复杂度时,可以忽略所有低次幂和最高次幂的系数,这样能够简化算法分析。
 

空间复杂度

空间复杂度:算法占用的空间大小。一般将算法的辅助空间作为衡量空间复杂度的标准。
算法占用的存储空间
  • 输入,输出数据;(一般不计算)
  • 算法本身;(可忽略不计)
  • 额外需要的辅助空间。
 
递归算法中,每一次递推需要一个栈空间来保存调用记录,因此,空间复杂度需要计算递归栈的辅助空间。
递归包括递推和回归。
递推是将原问题不断分解成子问题,直到达到结束条件,返回最近子问题的解;然后逆向逐一回归,最终到达递推开始的原问题,返回原问题的解。
notion image
 
栈 ,后进先出.
notion image
notion image
 
在运算过程中,使用了n个栈空间作为辅助空间,因此将阶乘递归算法的空间复杂度为O(n),时间复杂度也为O(n).
notion image
notion image
 
 
💡
有关算法相关方面的问题,欢迎您在底部评论区留言,一起交流~
详解HTTP青年在选择职业时的考虑
  • Twikoo
  • Giscus
  • Cusdis
Nolan
Nolan
靠天吃饭自由人🍚
公告
🎉欢迎来到阿豪的小站🎉
😊大家好,我是阿豪
🌱热爱看书、冥想、听播客、徒步
👯喜欢交朋友,很高兴能认识你!
免责声明
⚠️本站所有内容仅代表作者个人观点。内容仅供学习和交流使用,可以转载,但请注明出处。
⚠️用户使用信息时请自行核实,本站不对信息的准确性、完整性或使用后果承担责任。遵守相关法律法规,不得用于非法目的。
 
2023-2024 Nolan.

NotionNext BLOG | 靠天吃饭自由人🍚

Powered by Nolan.