- 9
- 0
- 约 29页
- 2016-12-28 发布于重庆
- 举报
算法分析初步 清华大学 刘汝佳 基本概念 算法 数据结构 程序 = 算法 + 数据结构 分析 程序分析 算法分析 问题分析 算法分析 先写程序,直接观察结果 同一算法,程序不同,运行时间不同 写代码太费事,如果写出来才发现很慢… 不写程序,直接分析算法 不写程序,怎么知道运行时间? 用“基本操作”数来衡量 表达式很复杂怎么办? 渐进表示 代码分析的例子 fact := 1; for i: =1 to n do fact := fact * i; 一次乘法为一个基本操作 忽略i改变的时间 共f(n) = n次基本操作 时间复杂度为n 代码分析的例子(2) sum := 0; for i :=1 to n do for j:=1 to n do sum := sum + a[i,j]; 基本操作:加法,乘法 忽略循环变量i和j的改变时间 共n2次基本操作 时间复杂度为n2 一个更复杂的例子 sum := 0; for i := 1 to n do begin fact := 1; for j := 1 to i do fact := fact * i; sum := sum + fact; end 第i次循环执行了i个操作 总时间复杂度为1+2+3+…+n = n(n+1)/2 如果式子再长一点,怎么办? 比较两个算法 算法一执行了f(n)=n2次
原创力文档

文档评论(0)