算法分析是理论研究:
于计算机程序性能与资源利用的研究
排序问题:
1.插入排序
·伪代码表示插入排序:
为代码解释:构造数组A,设置外部循环条件,j从2到n递增,内部循环条件开始于j-1并递减至0;
理解:我们找到j,数组A中的j位的值和前面的“常量”(已排序好的)相比,找到此时j位的值适合的位置,再令j++比较下一位。
·例子:8,2,4,9,3,6
·运行时间:
1.输入本身可能存在的时间损失:最坏->逆序?
2.输入规模的损失:将依输入的规模将其参数化,因此把运行时间看作待排列数据规模的函数(审视算法)
3.运行时间的上限;
·算法评估
1.最大运行时间:
最坏情况分析。
在输入规模为n时得到的最长程序运行时间。
2.期望时间:
输入规模n下所有可能输入的期望时间,是时间的期望值;
这应该是每种输入的运行时间乘以那种输入出现的概率,是一种加权平均;既然如此,需要每种输入的概率->需要作出有关输入的统计分布的假设
最常见假设:等可能出现->平均分布
3.最好情况分析:
a cheat.
算法的大局观(渐进分析):
1.忽略依赖于机器的常量。
2.不是去关注实际运行时间而关注运行时间的增长
2.归并排序(递归):
三步: