算法学习初级篇NO1.算法入门

版权声明:请尊重原创成果,未经允许,禁止转载 https://blog.csdn.net/qq_31441951/article/details/86766539

Start:2019.02.05

Remark:本文记录自己学习算法过程

一、算法入门知识

1.1 算法特征

  •  有穷性(Finiteness):算法的有穷性是指算法必须能在执行有限个步骤之后终止
  •  确定性(Definiteness):算法的每一步骤必须有确切的定义,无歧义
  •  输入输出性(Input & Output):有零或多个输入输出
  •  可行性(Effectiveness):算法原则上能够精确地运行,有限次运算后即可完成

1.2 ‘好’算法标准

  • 正确性:算法能满足具体问题的需求,即对任何合法的输入,算法都会得出正确的结果。
  • 易读性:容易理解和修改
  • 健壮性:指对非法输入的抵抗能力,当输入的数据非法时,算法能识别并做出处理,而不会因为输入的错误产生错误动作或造成瘫痪。
  • 高效性(时间复杂度):算法运行消耗的时间短
  • 低储存性(空间复杂度):算法运行所需的存储空间小,对于单片机制作产品至关重要。

1.3 时间复杂度

时间复杂度一般以算法的执行次数作为衡量标准,不是程序运行时间(秒~)。常用大O算法计算(当输入值大小趋近无穷时的运行次数)。

注:设计算法时应注意其时间复杂度,尽量避免平方线性阶以上的复杂度,避免“爆炸增量函数”。例如:“棋盘上的麦子”。

1.4 空间复杂度

空间复杂度指算法占用的空间大小,一般以辅助空间作为衡量标准。

1.5 算法设计思考

  • 算法是否正确?
  • 算法的复杂度如何?是否能满足环境运行?
  • 算法是否还能改进?

1.6 个人感悟

  • 公式只是算法记录载体,更多应明白算法设计原由

猜你喜欢

转载自blog.csdn.net/qq_31441951/article/details/86766539
今日推荐