绪论 -- 算法简述

2019-05-10  本文已影响0人  小小的开发人员

算法定义
  算法是解决待定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。

算法的特性
  算法有五个基本特性:输入、输出、有穷性、确定性和可行性。

算法设计的要求

  算法不是唯一的,同一个问题,可以有很多种解决问题的算法。
好的算法应该具有以下几点要求:

函数的渐进增长

例子 1:
  A 算法与 B 算法,A 算法要做 2n+3 次操作;B 算法要做 3n+1 次操作。问哪个执行的更快?

由上图可知,当 n = 1,算法 A 效率不如算法 B;当 n = 2 时,两者效率相同;当 n > 2 时,算法A开始优于算法 B了。得出结论,加法常数可以忽略

例子 2:
  C 算法与 D 算法,C 算法要做 4n+8 次操作;D 算法要做 2 n*n +1 次操作。问哪个执行的更快?

由上图可知,当 n <= 3 时,算法 C 差于算法 D;当 n > 3 时,算法 C 的优势开始越来越优于算法 D 了。得出结论:与最高次项相乘的常数并不重要

算法时间复杂度

这样用大写 O() 来体系那算法时间复杂度的记法,我们称之为大 O 记法。

一般情况下,随着n的增大,T(n) 增长最慢的算法为最优算法

得到的结果就是大 O 阶

算法空间复杂度

  一般情况下,一个程序在机器上执行时,除了需要存储程序本身的指令、常数、变量和输入数据外,还需要存储对数据操作的存储单元。若输入数据所占空间只取决于问题本身,和算法无关,这样只需要分析该算法在实现时所需的辅助单元即可。若算法执行时所需的辅助空间相对于输入的数据量而言是个常数,则称此算法为原地工作,空间复杂度为 O(n)。

  通常,我们都使用“时间复杂度”来指运行时间的需求,使用“空间复杂度”指空间需求。当不用限定词地使用“复杂度”时,通常都是指时间复杂度。

上一篇下一篇

猜你喜欢

热点阅读