大话数据结构——算法

来源:互联网 发布:怎么攻破一个软件 编辑:程序博客网 时间:2024/04/30 13:16

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

为什么把数据结构和算法一起说?
想想罗密欧与朱丽叶,梁山伯和祝英台,少了一个你总会觉得奇怪吧。

算法的五个基本特性:

  • 输入:有0个或多个输入;
  • 输出:有1个或多个输出;
  • 有穷性:步骤有限,不能无穷循环下去;
  • 确定性:有确定的含义,不能出现二义性;
  • 可行性:每一步都能通过有限次数完成。

算法设计的要求:

  • 正确性:能正确反映问题,得到问题的正确答案;
  • 可读性:便于阅读、理解和交流;
  • 健壮性:即使输入不合法,算法也能处理,而不是出现异常或中止;
  • 时间效率高和存储量低:像生活中人们所希望的花最少时间,办最大的事。

算法效率的度量方法:

  1. 事后统计法:利用测试好的程序和数据,用计算机测试运行时间判断算法的优劣。这种方法有很大缺陷,必须事先设计好程序,风险大;时间很可能依赖于计算机硬件配置;算法测试的数据选择困难,如数据量大小会影响运行时间。
  2. 事前分析估算法:在程序编制前,进行估算。取决于以下因素:算法采用的策略、方法(算法好坏的根本);编译产生的代码质量(软件);问题的输入规模;机器指令执行的速度(硬件条件)。

算法时间复杂度推导方法:

  1. 用行数1取代运行时间中的所有加法常数;例如,f(n)=1,f(n)=5等的时间复杂度都是O(1),也称为常数街;
  2. 在修改后的运行次数函数中,只保留最高阶的项;
  3. 如果最高阶存在且不是1,则去除与这个项相乘的常数。
    得到的结果就是大O阶。

常见的时间复杂度

常见的时间复杂度所耗费的时间的大小

0 0
原创粉丝点击