第一章 算法基本概念
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1st: 6 7 5 4 3 2 1 2nd:5 6 7 4 3 2 1 3rd:4 5 6 7 3 2 1 4th:3 4 5 6 7 2 1 5th:2 3 4 5 6 7 1 6th:1 2 3 4 5 6 7
数组A中的元素为
,并且
。 前面i-1个元素已按递增顺序排序,把元素xi插入到合 适位置的i种可能:
问题转化为n元钱买n只鸡,n为任意正整数,(1)(2) 变成:
a+b+c = n 5a+3b+c/3 = n
(4) (5)
算法1 百鸡问题 输入:所购买的三种鸡的总数目n 输出:满足问题解的数目k,公鸡,母鸡,小鸡的只 数g[],m[],s[] 执行时间:
外Loop n+1次 中Loop (n+1)×(n+1)次 内Loop (n+1)×(n+1)×(n+1)次 当n=100时,内Loop大于100万次
j=1:xi是序列中最小的,需执行i-1次比较; j=2:xi是这个序列中第二小的,仍需执行i-1次比较; j=3:xi是这个序列中第三小的,需执行i-2次比较; j=i:xi是这个序列中最大的,需执行1次比较。
当2 ≤ j ≤ i时,算法需执行的比较次数为i-j+1。 这i种可能性的概率相同,都是1/i。元素xi插入到合 适的位置的平均比较次数Ti:
百鸡问题的算法2的时间花费:
算法时间复杂性的定义:
运行时间上界 O记号
例:百鸡问题算法2
运行时间下界 Ω记号
例:百鸡问题的算法2,第11、12、13、14行,仅 在条件成立时才执行,其执行次数未知。假定条件 均不成立,这些语句均未执行,该算法的执行时间 至少为:
运行时间的准确界,Θ记号
算法的输入规模和运行时间的阶
算法的输入规模和运行时间
令百鸡问题的算法1、2,其最内部的循环体每执行一次, 需1μs时间。
n=100的内循环 次数 时间
1s
n=10000的内循环次数
100003
时间
11天零13小时 6.7秒
算法1 算法2
100万次 714次
Байду номын сангаас
714μs (10000/5+1)×(10000/3+1)
n=220 选择排序需6.4天 合并排序需20秒 算法的执行时间随问题规模的增大而增长的情况。
算法运行时间的评估
不能准确地计算算法的具体执行时间 不需对算法的执行时间作出准确地统计(除非在实时系 统中) 初等操作:所有操作数都具有相同的固定字长;所有操 作的时间花费都是一个常数时间间隔。算术运算;比较 和逻辑运算;赋值运算,等等; 例:输入规模为 n,百鸡问题算法1的时间花费,可估计:
蛮力法 递归与分治
OUR PLAN
14
Lecture Classes and 7 Lab Classes Final Exam on Week 18 Maybe Mid-term Exam on Week 10 Marks
Attendance 5% Assignments (lab & lecture) 25% Mid-term exam 20% Final exam 50%
因为:
所以:
由此可得,插入排序算法insert_sort在平均情况下的时 间复杂性是 。
THE END
实例
REVIEW
算法设计的例子 算法复杂性分析 算法的时间复杂性 算法的时间复杂性分析
算法的时间复杂性分析
最坏情况的分析 平均情况的分析 最好情况的分析
平均情况分析
在平均情况下,算法的运行时间取算法在所有可能 输入的平均运行时间。 例:插入排序算法insert_sort的平均情况分析。 如: 7654321 1234567
算法2 改进的百鸡问题
公鸡只数:0~n/5 母鸡只数:0~n/3 母鸡只数:c = n-a-b
输入:所购买的三种鸡的总数目n 输出:满足问题的解的数目k,公鸡,母鸡,小鸡的 只数g[],m[],s[] 执行时间:
外循环: n/5+1次 内循环: (n/5+1)×(n/3+1) 当n=100时,内Loop为21×34=714次
REVIEW
算法设计的例子 算法复杂性分析 算法的时间复杂性 算法的时间复杂性分析
算法的复杂性分析
问题:效率和方法。 问题一:如何设计算法,算法的设计方法。 问题二:如何分析算法,算法的复杂性分析。
用算法的复杂性来衡量算法的效率。 算法的时间复杂性和算法的空间复杂性。
REVIEW
算法设计的例子 算法复杂性分析 算法的时间复杂性 算法的时间复杂性分析
算法设计的例子:百元百鸡
“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三, 值钱一。百钱买百鸡,各几何?”
a:
公鸡只数,b: 母鸡只数,c: 小鸡只数。约 束方程: a+b+c = 100 (1) 5a+3b+c/3 = 100 (2) c%3 = 0 (3)
算法的时间复杂性越高,算法的执行时间越长;反之,
执行时间越短。
算法的空间复杂性越高,算法所需的存储空间越多;反 之越少。
REVIEW
算法设计的例子 算法复杂性分析 算法的时间复杂性 算法的时间复杂性分析
算法的时间复杂性
算法的输入规模和运行时间的阶 运行时间的上界,O记号 运行时间的下界,Ω记号 运行时间的准确界,Θ记号
CHAPTER 1 INTRODUCTION TO ALGORITHM
Lijie Yang ya77410@umac.mo
CONTENT
算法的基本概念 (Review)
贪心法 动态规划法 回溯法 分支限界法
算法设计的例子
算法复杂性分析
算法的时间复杂性 算法的时间复杂性分析