大话数据结构 第二章 算法

算法定义

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

算法特性

输入

  • 具有零个或者多个输入

输出

  • 算法最少有一个输出。

有穷性

  • 算法在执行完有限步骤后会自动结束,不会无限循环

确定性

  • 算法的每个步骤都有确定的含义,无二义性。

可行性

算法设计的要求

正确性

  • 算法的正确性大部分情况下都不是用程序证明的,而是用数学方法证明的。
  • 检验一个算法是否正确的普遍标准:算法程序在没有语法错误、对于合法的输入数据能够产生满足要求的输出结果的前提下,对于非法的输入数据能够得出满足规格说明的结果

可读性

健壮性

  • 健壮性是指:当输入数据不合法时,算法也能做出相关处理,而不是产生异常或莫名其妙的结果

时间效率高和存储量低

算法效率的度量方法

事后统计方法

  • 利用计算机计时器对不同算法的程序的运行时间进行比较,从而确定效率的高低。
  • 有很大缺陷,不予采纳

事前分析估算方法

  • 指在程序编制前,根据统计方法对算法进行估算
  • 一个程序的运行时间,依赖于算法的好坏和问题的输入规模(输入量的多少)
  • 判断一个算法的效率时,函数中的常数和其他次要项常常可以忽略,而更应该关注最高阶项的阶数

算法时间复杂度

推导大O阶方法

  • 用常数1取代运行时间中的所有加法常数
  • 在修改后的运行次数函数中,只保留最高阶项
  • 如果最高阶项存在且不是1,则去除与这个项相乘的常数
  • 最后得到的结果就是大O阶

常见大O阶

  • 常数阶O(1)、线性阶O(n)、对数阶O(log n)、平方阶O(n^2 )、立方阶O(n3)、指数阶O(2n)

复杂度关系

  • 常数阶<对数阶<线性阶<nlogn阶<平方阶<立方阶<指数阶<阶乘阶
发布了59 篇原创文章 · 获赞 3 · 访问量 1810

猜你喜欢

转载自blog.csdn.net/Felix_hyfy/article/details/98800894