《大话数据结构》读书笔记--第2章 算法

2.4 算法定义

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

2.5 算法的特性

  1. 输入、输出、有穷性、确定性、可行性。

2.6 算法设计的要求

  1. 正确性、可读性、健壮性、时间效率高和存储量低

2.7 算法效率的度量方法

  1. 事后统计方法
  2. 事前分析估算方法:在计算机程序编制前,依据统计方法对算法进行评估。
    1.采用策略、方法
    2.编译产生代码质量
    3.问题输入规模
    4.机器执行指令速度

2.8 函数的渐近增长

  1. 给定两个函数 f(n) 和 g(n),如果存在一个整数 N,使得对于所有的 n > N,f(n) 总是比 g(n) 大,f(n) 的增长渐快于 g(n);
  2. 判断一个算法的效率时,函数中的常数和其他次要项常常可以忽略,而应该更关注主项(最高阶项)的阶数。

2.9 算法时间复杂度

  1. 在进行算法分析是,语句总的执行次数 T(n) 是关于问题规模 n 的函数,进而分析 T(n) 随 n 的变化情况并确定 T(n) 的数量级,算法的时间复杂度,也就是算法的时间量度,记:T(n)= O(f(n),它表示随问题规模 n 的增大,算法执行时间增长率和 f(n) 的增长率相同,称作算法的渐近时间复杂度,简称时间复杂度,其中 f(n) 是问天规模 n 的某个函数。表示 大 O 记法
  2. 一般情况下,随着 n 增大,T(n) 增长最慢的算法为最优算法。
  3. 常数阶(O(1))、线性阶(O(n))、对数阶(O(logn))、平方阶(n2)、指数阶、立方阶(n3)、nlog阶(nlogn阶)

2.9.2 推导大 O 阶方法

  1. 用常数 1 取代运行时间中所有加法常数
  2. 在修改后的运行次数,只保留最高阶项
  3. 如果最高阶项存在并不为 1 ,取出相乘的常数。

2.11 最坏情况与平均情况

  1. 平均时间复杂度(期望的运行时间)
  2. 最坏时间复杂度(运行时间不能再坏了)–通常用这个

2.12 算法空间复杂度

  1. 通过计算算法多需要的存储空间实现,算法空间复杂度的计算公式:S(n) = O(f(n)),n 为问题的规模,f(n) 为语句关于 n 所占存储空间函数。
发布了40 篇原创文章 · 获赞 14 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_44947117/article/details/104173316
今日推荐