数据结构第一章考点

数据结构


前言


一、时间复杂度

  时间复杂度一般单独命题或结合算法题。
  时间复杂度T(n)是指算法中所有语句的频度(执行次数)之和。人们关心的是当n趋于无穷时T (n)的数量级,而非T (n)的准确大小,因此以T (n)的数量级来表征时间复杂度。
  eg:T(n)=n3+n2+n,可认为时间复杂度Tn)=0(n),这里数量级最大的一项必定是由最深层循环的语句贡献的,称之为基本运算。由于 T(n)与算法中基本运算的频度f(n)同数量级,所以通常采用基本运算的频度的数量级Of(n)来分析算法的时间复杂度,记为T(n)=O(f(n))。
  可以将前文总结成一句话:将算法中基本运算的执行次数的数量级作为时间复杂度

1.1 时间复杂度计算的两种规则

  时间复杂度的计算遵循两种规则:
在这里插入图片描述

二、空间复杂度

  空间复杂度 S(n)指算法运行过程中所使用的辅助空间的大小,通常结合算法题考试。
  若输入数据所占空间只取决于问题本身,和算法无关,则只需分析除输入数据和程序之外的临时分配的额外空间。
  算法原地工作是指算法所需辅助空间是常量,即0(1)。

三、递归(拓展)

  递归是算法领域的一个重要思想。递归算法可以通过迭代或栈改写为非递归算法。

3.1 递归算法的特性

1、一个算法直接或间接调用自身。
2 、必须有一个明确的递归结束条件,称为递归出口。
  由于递归算法需要反复进行函数调用与返回,运行效率较低。实现递归的关键是建立递归调用工作栈。当有多个函数构成嵌套调用时,按照后调用先返回的原则,因此递归调用需要开辟栈以存放每一层的返回点、局部变量等,栈的大小也就是递归深度和递归算法空间复杂度的大小。

总结

期待大家和我交流,留言或者私信,一起学习,一起进步!

Guess you like

Origin blog.csdn.net/CltCj/article/details/118740287