算法导论 第二章: Getting Started

来源:互联网 发布:des加密解密算法 编辑:程序博客网 时间:2024/06/03 12:02

这一章初步介绍算法的分析以及算法的设计。贯穿整本书的主题。

算法分析:
算法的分析是针对计算机程序性能和资源利用的理论研究。常见的分析分为三类:
(1)Worst-case: [通常被关注]
T(n)=#max time on any input of size n
(2)Average-case:[有时候被关注]
T(n)=#expeced time over all inputs of size n
需要统计分布的假设,通常假设所有输入是等可能出现的。
(3)Best-case:
被称为假象(bogus),没什么用。
当我们谈论软件算法而不考虑硬件时,对运行时间常常会产生一些疑惑。因为同一个算法在不同的机器上运行的速度不同。因此我们用一个更通用的概念来分析算法的性能,即渐进分析(Asymptotic Analysis)。
渐进分析忽略那些依赖于机器的常量,不关注实际的运行时间,而关注于运行时间的增长。
以插入排序(Insertion sort)为例,算法代码如下:
这里写图片描述
其最坏情况(worst-case)下的运行时间为:这里写图片描述
当n非常大时,运行速度慢。因此我们需要设计其他方法来加快速度。

算法设计
以归并排序(Merge sort)为例,伪代码如下:
这里写图片描述

这里写图片描述
运行时间的递归表达式为:
这里写图片描述
即:
这里写图片描述

0 0
原创粉丝点击