数据结构重学日记(二)算法和相关概念

算法

算法是对问题求解步骤的描述,通过有限序列的指令来实现。

通俗来说,算法就是计算机解决问题的方法和技巧。

通常,算法都具备以下五种特性:

有穷性

有限步之后结束,不会出现无线循环。

确定性

算法的每条指令都有明确的意义,不会产生二义性。

可行性

算法在当前环境条件下可以通过有限次运算实现。
比如受限于计算机的计算能力,有些算法虽然理论上可行,但实际上无法完成。

输入

能被计算机处理的各种类型的数据,如数字、音频、图像等。

输出

一至多个程序输出结果。

15399725-09db127e2bcc6aa4.png
算法

算法设计的要求

算法不是唯一的,也就是说同一个问题可以有多种解决问题的算法。

设计一个好的算法,需要满足 5 点要求:

正确性

算法至少具备输入输出和加工处理无歧义,能正确反应问题的需求,能够得到问题的正确答案。

大体分为 4 个层次:

  • 算法程序没有语法错误
  • 算法程序对于合法输入能够产生满足要求的输出
  • 算法程序对于非法输入能够产生满足规格的说明
  • 算法程序对于故意刁难的测试输入都有满足要求的输出结果。
可读性

算法设计的另一目的是为了便于阅读、理解和交流。

健壮性

当输入数据不合法时,算法也能做出相关的处理,而不是产生异常、崩溃或莫名其妙的结果。

时间效率高和存储量低

好算法应该具备时间效率高和存量低的特点。

算法复杂度

算法的复杂度研究的是算法随着输入规模的扩大增长量的一个抽象,而不是精确定位算法需要执行多少次。

所以判断一个算法的效率时,函数中的常熟和其他次要项可以忽略,应该关注主项(最高项)的阶数。

时间复杂度

  • 用来衡量算法随着问题规模增大,算法执行时间增长的快慢的一个函数。
  • 时间复杂度是问题规模的函数: 记作 T(n),时间复杂度主要分析 T(n)的数量级
  • T(n) = O(f(n))。

f(n)是算法中基本运算的频度,一般考虑最坏情况下的时间复杂度。

15399725-8c72490c84e5a9b4.png
计算方法

空间复杂度

  • 衡量算法随问题规模增大,算法所需空间的增长的快慢。
  • 是问题规模的函数: S(n) = O(g(n))。
15399725-970173a83324b94e.png
时间复杂度

猜你喜欢

转载自blog.csdn.net/weixin_34267123/article/details/87473575
今日推荐