算法分析基础
算法设计与分析基础课后习题答案solu4

C(2k) = 2C(2k−1) + 1 = 2[2C(2k−2) + 1] + 1 = 22C(2k−2) + 2 + 1 = 22[2C(2k−3) + 1] + 2 + 1 = 23C(2k−3) + 22 + 2 + 1 = ... = 2iC(2k−i) + 2i−1 + 2i−2 + ... + 1 = ... = 2kC(2k−k) + 2k−1 + 2k−2 + ... + 1 = 2k − 1 = n − 1.
Design a divide-and-conquer algorithm for this problem.
2
Hints to Exercises 4.1
1. In more than one respect, this question is similar to the divide-and-conquer computation of the sum of n numbers. Also, you were asked to analyze an almost identical algorithm in Exercises 2.4.
b. Set up and solve a recurrence relation for the number of multiplications made by this algorithm.
c. How does this algorithm compare with the brute-force algorithm for this problem?
《算法设计与分析基础(第3版)》第一,二章部分习题答案

作业一学号:_____ 姓名:_____说明:1、正文用宋体小四号,1.5倍行距。
2、报告中的图片、表格中的文字均用宋体五号,单倍行距。
3、图片、表格均需要有图片编号和标题,均用宋体五号加粗。
4、参考文献用宋体、五号、单倍行距,请参照参考文献格式国家标准(GB/T 7714-2005)。
5、公式请使用公式编辑器。
P144.用伪代码写一个算法来求方程ax2+bx+c=0的实根,a,b,c 是任意实系数。
(可以假设sqrt(x)是求平方根的函数。
)算法:Equate(a,b,c)//实现二元一次方程求解实数根//输入:任意系数a,b,c//输出:方程的实数根x1,x2或无解If a≠0p←b2−4acIf p>0x1←−b+sqrt(p)2ax2←−b−sqrt(p)2areturn x1,x2else if p=0return −b2aelsereturn “no real roots”elseif b≠0return −cbelseif c≠0return “no real numbers”elsereturn “no real roots”5.写出将十进制正整数转换为二进制整数的标准算法。
a.用文字描述。
b.用伪代码描述。
a.解:输入:一个正整数n输出:正整数n相应的二进制数第一步:用n 除以2,余数赋给K[i](i=0,1,2...),商赋给n第二步:如果n=0 ,则到第三步,否则重复第一步第三步:将K[i]按照i从高到低的顺序输出b.解:算法:DecToBin(n)//实现正整数十进制转二进制//输入:一个正整数n//输出:正整数n对应的二进制数组K[0..i]i ←1while n≠0 doK[i]←n%2n←(int)n/2i ++while i≠0doprint K[i]i - -p462.请用O,Ω 和θ的非正式定义来判断下列断言是真还是假。
a. n(n+1)/2∈O(n3)b. n(n+1)/2∈O(n2)c. n(n+1)/2∈θ(n3)d. n(n+1)/2∈Ω(n)解:断言为真:a,b,d断言为假:cP535.考虑下面的算法。
算法设计与分析基础课后习题答案

Program算法设计与分析基础中文版答案习题5..证明等式gcd(m,n)=gcd(n,m mod n)对每一对正整数m,n都成立.Hint:根据除法的定义不难证明:如果d整除u和v, 那么d一定能整除u±v;如果d整除u,那么d也能够整除u的任何整数倍ku.对于任意一对正整数m,n,若d能整除m和n,那么d一定能整除n和r=m mod n=m-qn;显然,若d能整除n和r,也一定能整除m=r+qn和n。
数对(m,n)和(n,r)具有相同的公约数的有限非空集,其中也包括了最大公约数。
故gcd(m,n)=gcd(n,r)6.对于第一个数小于第二个数的一对数字,欧几里得算法将会如何处理?该算法在处理这种输入的过程中,上述情况最多会发生几次?Hint:对于任何形如0<=m<n的一对数字,Euclid算法在第一次叠代时交换m和n, 即gcd(m,n)=gcd(n,m)并且这种交换处理只发生一次..对于所有1≤m,n≤10的输入, Euclid算法最少要做几次除法?(1次)b. 对于所有1≤m,n≤10的输入, Euclid算法最多要做几次除法?(5次)gcd(5,8)习题1.(农夫过河)P—农夫 W—狼 G—山羊 C—白菜2.(过桥问题)1,2,5,10---分别代表4个人, f—手电筒4. 对于任意实系数a,b,c, 某个算法能求方程ax^2+bx+c=0的实根,写出上述算法的伪代码(可以假设sqrt(x)是求平方根的函数)算法Quadratic(a,b,c)描述将十进制整数表达为二进制整数的标准算法a.用文字描述b.用伪代码描述解答:a.将十进制整数转换为二进制整数的算法输入:一个正整数n输出:正整数n相应的二进制数第一步:用n除以2,余数赋给Ki(i=0,1,2...),商赋给n第二步:如果n=0,则到第三步,否则重复第一步第三步:将Ki按照i从高到低的顺序输出b.伪代码算法 DectoBin(n).n]中i=1while n!=0 do {Bin[i]=n%2;n=(int)n/2;i++;}while i!=0 do{print Bin[i];i--;}9.考虑下面这个算法,它求的是数组中大小相差最小的两个元素的差.(算法略)对这个算法做尽可能多的改进.算法 MinDistance(A[0..n-1])n-1]a.应用该算法对列表”60,35,81,98,14,47”排序b.该算法稳定吗?c.该算法在位吗?解:a. 该算法对列表”60,35,81,98,14,47”排序的过程如下所示:b.该算法不稳定.比如对列表”2,2*”排序c.该算法不在位.额外空间for S and Count[]4.(古老的七桥问题)习题1.请分别描述一下应该如何实现下列对数组的操作,使得操作时间不依赖数组的长度.a.删除数组的第i个元素(1<=i<=n)b.删除有序数组的第i个元素(依然有序)hints:a. Replace the i th element with the last element and decrease the array size of 1b. Replace the ith element with a special symbol that cannot be a value of the array’s element., 0 for an array of positive numbers ) to mark the i th position is empty. (“lazy deletion”)第2章习题7.对下列断言进行证明:(如果是错误的,请举例)a. 如果t(n)∈O(g(n),则g(n)∈Ω(t(n))b.α>0时,Θ(αg(n))= Θ(g(n))解:a. 这个断言是正确的。
算法设计与分析基础习题参考答案

算法设计与分析基础习题参考答案5..证明等式gcd(m,n)=gcd(n,m mod n)对每⼀对正整数m,n都成⽴.Hint:根据除法的定义不难证明:●如果d整除u和v, 那么d⼀定能整除u±v;●如果d整除u,那么d也能够整除u的任何整数倍ku.对于任意⼀对正整数m,n,若d能整除m和n,那么d⼀定能整除n和r=m mod n=m-qn;显然,若d能整除n和r,也⼀定能整除m=r+qn和n。
数对(m,n)和(n,r)具有相同的公约数的有限⾮空集,其中也包括了最⼤公约数。
故gcd(m,n)=gcd(n,r)6.对于第⼀个数⼩于第⼆个数的⼀对数字,欧⼏⾥得算法将会如何处理?该算法在处理这种输⼊的过程中,上述情况最多会发⽣⼏次? Hint:对于任何形如0<=m并且这种交换处理只发⽣⼀次.7.a.对于所有1≤m,n≤10的输⼊, Euclid算法最少要做⼏次除法?(1次)b. 对于所有1≤m,n≤10的输⼊, Euclid算法最多要做⼏次除法?(5次)gcd(5,8)习题1.21.(农夫过河)P—农夫W—狼G—⼭⽺C—⽩菜2.(过桥问题)1,2,5,10---分别代表4个⼈, f—⼿电筒4. 对于任意实系数a,b,c, 某个算法能求⽅程ax^2+bx+c=0的实根,写出上述算法的伪代码(可以假设sqrt(x)是求平⽅根的函数)算法Quadratic(a,b,c)//求⽅程ax^2+bx+c=0的实根的算法//输⼊:实系数a,b,c//输出:实根或者⽆解信息D←b*b-4*a*cIf D>0temp←2*ax1←(-b+sqrt(D))/tempx2←(-b-sqrt(D))/tempreturn x1,x2else if D=0 return –b/(2*a)else return “no real roots”else //a=0if b≠0 return –c/belse //a=b=0if c=0 return “no real numbers”else return “no real roots”5.描述将⼗进制整数表达为⼆进制整数的标准算法a.⽤⽂字描述b.⽤伪代码描述解答:a.将⼗进制整数转换为⼆进制整数的算法输⼊:⼀个正整数n输出:正整数n相应的⼆进制数第⼀步:⽤n除以2,余数赋给Ki(i=0,1,2...),商赋给n第⼆步:如果n=0,则到第三步,否则重复第⼀步第三步:将Ki按照i从⾼到低的顺序输出b.伪代码算法DectoBin(n)//将⼗进制整数n转换为⼆进制整数的算法//输⼊:正整数n//输出:该正整数相应的⼆进制数,该数存放于数组Bin[1...n]中i=1while n!=0 do {Bin[i]=n%2;n=(int)n/2;i++;}while i!=0 do{print Bin[i];i--;}9.考虑下⾯这个算法,它求的是数组中⼤⼩相差最⼩的两个元素的差.(算法略) 对这个算法做尽可能多的改进.算法MinDistance(A[0..n-1])//输⼊:数组A[0..n-1]//输出:the smallest distance d between two of its elements习题1.31.考虑这样⼀个排序算法,该算法对于待排序的数组中的每⼀个元素,计算⽐它⼩的元素个数,然后利⽤这个信息,将各个元素放到有序数组的相应位置上去.a.应⽤该算法对列表‖60,35,81,98,14,47‖排序b.该算法稳定吗?c.该算法在位吗?解:a. 该算法对列表‖60,35,81,98,14,47‖排序的过程如下所⽰:b.该算法不稳定.⽐如对列表‖2,2*‖排序c.该算法不在位.额外空间for S and Count[]4.(古⽼的七桥问题)习题1.41.请分别描述⼀下应该如何实现下列对数组的操作,使得操作时间不依赖数组的长度. a.删除数组的第i 个元素(1<=i<=n)b.删除有序数组的第i 个元素(依然有序) hints:a. Replace the i th element with the last element and decrease the array size of 1b. Replace the ith element with a special symbol that cannot be a value of the array ’s element(e.g., 0 for an array of positive numbers ) to mark the i th position is empty . (―lazy deletion ‖)第2章习题2.17.对下列断⾔进⾏证明:(如果是错误的,请举例) a. 如果t(n )∈O(g(n),则g(n)∈Ω(t(n)) b.α>0时,Θ(αg(n))= Θ(g(n)) 解:a. 这个断⾔是正确的。
算法分析基础——主定理

算法分析基础——主定理
对于形为T(n) = aT(n / b) + f(n)的递推⽅程,我们有如下结论:
主定理(MasterTheorem)设a≥1,b>1 为常数,f(n)为函数,n为⾮负整数,且 T(n) = aT(n / b) + f(n),则有以下结果:
1. 若存在ε>0,使得f(n) = O(n log b a-ε),则T(n) = Θ(n log b a)
2. 若f(n) = Θ(n log b a),则T(n) = Θ(n log b a logn)
3. 若存在ε>0,使得f(n) = Ω(n log b a+ε),并且对于某个常数c<1和所有充分⼤的n,有af(n / b)≤cf(n),则T(n) = Θ(f(n))
证明:详见教材(推导过程略复杂,不想写了qwq)。
由主定理可以直接得到下述推论:
推论1 依主定理条件,递推⽅程为T(n)= aT(n / b) + c,则
1. 当a≠1时,T(n) = Θ(n log b a)
2. 当a=1时,T(n) = Θ(logn)
推论2 依主定理条件,递推⽅程为T(n) = aT(n / b) + cn,则
1. 当a>b时,T(n) = Θ(n log b a)
2. 当a=b时,T(n) = Θ(nlogn)
3. 当a<b时,T(n) = Θ(n)
例根据主定理及其推论,我们可以直接得到⼆分检索算法的平均时间复杂度为Θ(logn),⽽⼆分归并排序的平均时间复杂度为Θ(nlogn)。
算法设计与分析基础

2023/12/21
20
LingJie/GDUT
1.2.6 详细表述该算法的方法
• 可以用到的工具有自然语言(nature
language)、伪代码(pseudocode)以及程序 流程图(flow chart)等。
• 当对一个问题有了概要的理解后,下面的工作
就是把这个问题的想法进行细化。所谓的细化 就是把它们表示成算法的步骤。
令执行顺序以及同步等问题。并行算法的设计 有相应的理论,这里仅考虑串行算法。
2023/12/21
17
LingJie/GDUT
1.2.3 选择精确或者近似的算法
• 解决问题下一步要考虑的是使用精确的还是近
似的算法。并不是每一个可解的问题都有精确 的算法,例如求一个数的平方根,求非线性方 程的解等。有时候一个问题有精确的解法但是 算法的执行效率很差,例如旅行家问题。因此 如果待处理的问题涉及到上述那些方面,则要 考虑是选择精确的还是近似的算法。
2023/12/21
10
LingJie/GDUT
-- 2* 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
-- 2 3*
5
7
9
11
13
15
17
19
21
23
25
-- 2 3
5*
7
11
13
17
19
23
25
-- 2 3
5
7
11
13
第一步:找出m的所有质因数。 第二步:找出n的所有质因数。 第三步:从第一步求得的m的质因数分解式和第二步求得的n
的质因数分解式中,找出所有公因数。 第四步:将第三步找到的公因数相乘,结果为所求的
算法-第2章-算法效率分析基础
The Big-O and Related Notations
2.2.7 基本的效率类型
1 log n n n log n n2 n3 2n n! constant logarithmic linear n log n quadratic cubic exponential factorial
思考
2.2.2 符号О
定义1 我们把函数t(n)属于O(g(n)) ,记作t(n) ∈ O(g(n)) ; 它的成立条件是:对于所有足够大的n, t(n) 的上界由g(n) 的常数倍数所确定,也就是说,存在大于0的常数c和非负 的整数n0,使得: 对于所有的n≥ n0来说, t(n) ≤c g(n)
cg(n)
2.2 渐进符号和基本效率类型
2.2.1 非正式的介绍
O(g(n)) 是增长次数小于等于g(n) (以及其常数倍,n趋 向于无穷大)的函数集合。 n∈O(n2),100n+5∈O(n2), n(n-1) /2 ∈O(n2),n3∈/ O(n2), Ω(g(n)),代表增长次数大于等于g(n)(以及其常数倍,n趋 向于无穷大)的函数集合。 n3∈ Ω(n2), n(n-1) /2 ∈ Ω(n2),但是100n+5 ∈/ Ω(n2) Θ(g(n))是增长次数等于g(n) )(以及其常数倍,n趋向于无 穷大)的函数集合。因此,每一个二次方程an2+bn+c在 a>0的情况下都包含在Θ(n2)中,除了无数类似于n2+sin n和n2+log n的函数(你能解释原因吗?)。
t(n) cg(n)
n0之前的情 况无关重要
n n0 符号Ω:t(n)∈Ω(g(n))
2.2.4 符号Θ
定义 3 我们把函数t(n)属于Θ(g(n)) ,记作t(n) ∈Θ(g(n)) ; 它的成立条件是:对于所有足够大的n, t(n) 的上界和下 界都由g(n)的常数倍数所确定,也就是说,存在大于0的 常数c1,c2和和非负的整数n0,使得: 对于所有的n≥ n0来说, c2g(n) ≤t(n) ≤ c1g(n)
第2章 算法分析基础(《算法设计与分析(第3版)》C++版 王红梅 清华大学出版社)
3
Page 11
2.1.2 算法的渐近分析
常见的时间复杂度:
Ο(1)<(log2n)<(n)<(nlog2n)<(n2)<(n3)<…<(2n)<(n!)
多项式时间,易解问题
算
法
指数时间,难解问题
设 计 与
分
析
(
第
时间复杂度是在不同数量级的层面上比较算法
版 )
清
华
大
学
时间复杂度是一种估算技术(信封背面的技术)
Page 7
2.1.2 算法的渐近分析
3
每条语句执行次数之和 = 算法的执行时间 = 每条语句执行时间之和
基本语句的执行次数 for (i = 1; i <= n; i++)
单位时间
算
法
设
计
与
执行次数 × 执行一次的时间
分 析 (
第
for (j = 1; j <= n; j++)
版 )
x++;
指令系统、编译的代码质量
算法设计:面对一个问题,如何设计一个有效的算法
算
法
设
检
指
验
导
评
计 与 分 析 ( 第 版
改
估
) 清
进
华 大
学
出
版
算法分析:对已设计的算法,如何评价或判断其优劣
社
3
Page 3
2.1.1 输入规模与基本语句
如何度量算法的效率呢?
事后统计:将算法实现,测算其时间和空间开销
缺点:(1)编写程序实现算法将花费较多的时间和精力 (2)所得实验结果依赖于计算机的软硬件等环境因素
第2章 算法分析基础ppt课件
最新课件
7
1)事前分析
• 目的:试图得出关于算法执行特性的一种形式描 述,以“理论上”衡量算法 “好坏”。
• 如何给出反映算法执行特性的描述?
最直接方法:统计算法中各种运算的执行情况:
算法的数量级从本质上反映了一个算法的执行特性。 例:求解同一问题的三个算法分别具有n, n2 , n3数量级。 若n=10,则可能的执行时间将分别是10,100,1000 个 单位时间——与环境因素无关。
最新课件
10
• 计算时间/频率计数的表示函数 通过事前分析给出算法计算时间(频率计数)
的一个函数表示形式,一般记为与输入规模n有关 的函数形式:f(n)
则记作 f(N)=(g,(N))
含义:
• 算法在最好和最坏情况下的计算时间就一个常数因子范 围内而言是相同的。可看作:
既有f(N)=Ω(g(N)),又有f(N)=Ο(g(N))
最新课件
28
最新课件
29
算法分析方法
• 例:顺序搜索算法
template<class Type> int seqSearch(Type *a, int n, Type k) {
最新课件
13
算法的时间复杂性
• (1)最坏情况下的时间复杂性 • Tmax(n) = max{ T(I) | size(I)=n } • (2)最好情况下的时间复杂性 • Tmin(n) = min{ T(I) | size(I)=n } • (3)平均情况下的时间复杂性
• Tavg(n) =
p(I)T(I)
算法分析基础
6
程序(Program)
• 程序是算法用某种程序设计语言的具体实现。 • 程序可以不满足算法的有限性的性质。例如操作系统,是一个
在无限循环中执行的程序,因而不是一个算法。 • 操作系统的各种任务可看成是单独的问题,每一个问题由操作
系统中的一个子程序通过特定的算法来实现。该子程序得到输 出结果后便终止。
《算法设计技巧与分析》
第1章 算法分析基本概念
曹霑懋 caozhanmao@
Chapter 1 Basic Concepts in Algorithmic Analysis 内容
1.1 Introduction l.2 Historical Background 1.3 Binary Search 1.3.1 Analysis of the binary search algorithm 1.4 Merging Two Sorted Lists 1.5 Selectinn Sort 1.6 Insertion Sort 1.7 Bottom-Up Merge Sorting 1.7.1 Analysis of bottom-up merge sorting
最大搜索次数:满足Floor(n/2j-1)=1 时的j 值
– 即:1n/2j-1 <2 – 也即: 2j-1n <2j
– j-1 log n <j
j=Floor(log n)+1
2020/6/10
华南师范大学 计算
16
设随有堂序数练组习:
试搜索x=20, 以及 X =22. 1)拟用什么法?为什么? 2)试给出用你想要得算法求解的过程。
2020/6/10
华南师范大学 计算
14
1. 3 二分搜索及其时间复杂
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2020/8/21
h
6
程序(Program)
• 程序是算法用某种程序设计语言的具体实现。 • 程序可以不满足算法的有限性的性质。例如操作系统,是一个
在无限循环中执行的程序,因而不是一个算法。 • 操作系统的各种任务可看成是单独的问题,每一个问题由操作
系统中的一个子程序通过特定的算法来实现。该子程序得到输 出结果后便终止。
2020/8/21
h
8
好的算法所具备的意义
2020/8/21
h
9
衡量算法性能的标准
• 衡量算法性能一般有下面几个标准
– 正确性 – 易读性 – 健壮性 – 算法的时间和空间性能:高效率和低存储空间
我们这里主要讨论算法的时间和空间性能,并以此作为衡 量算法性能的重要标准。而且我们主要侧重于时间方面。
• l.8.4 The e-notation
• 1.8.5 MamPles
• 1.8.6 Complekity classes and the o-notation
• 1.9 Space Complexity
• 1.10 Optimal Algorithms
2020/8/21
h
3
1. 1 引言
➢Donald E. Knuth: 计算机科学就是算法的 研究.
➢每个领域: 依赖 有效算法设计 ➢运行时间: 由例子到理论 ➢时间是衡量算法有效性的最好测度
➢算法的几个方面:
➢输入 ➢有限指令集 ➢输出 (存在? Y/N)
2020/8/21
h
4
算法概念
➢ 算法是程序设计的精髓,程序设计的实质就是细化构造解 决问题的算法,将其解释为计算机语言。
➢ 算法是在有限步骤内求解某一问题所使用的一组定义明确
《算法设计技巧与分析》
第1章 算法分析基本概念
曹霑懋 caozhanmao@
h
1
Chapter 1 Basic Concepts in Algorithmic Analysis 内容
• 1.1 Introduction • l.2 Historical Background • 1.3 Binary Search • 1.3.1 Analysis of the binary search algorithm • 1.4 Merging Two Sorted Lists • 1.5 Selectinn Sort • 1.6 Insertion Sort • 1.7 Bottom-Up Merge Sorting • 1.7.1 Analysis of bottom-up merge sorting •
的指令(规则)。通俗点说,就是计算机解题的过程。在 这个过程中,无论是形成解题思路还是编写程序,都是在 实施某种算法。前者是推理实现的算法,后者是操作实现 的算法。
➢ 一个算法应该具有以下五个重要的特征:
➢ 有穷性: 一个算法必须保证执行有限步之后结束; ➢ 确切性: 算法的每一步骤必须有确切的定义;
2. “算法”的现代诠释 算法的现代意义十分类似于处方、过程、方法、规程、程
序,一个算法就是有穷规则的集合。其中,规则规定了一个 解决某一特定类型的问题的运算序列。
3. 学习“算法”的方法
一个算法应该是可以信赖的,而且学习一个算法直到彻 底掌握的最好方法是反复进行试验。
因此,遇到一个算法时,应该找出这个算法的一个例子, 给出该例子的要点进行试验。
2020/8/21
h
7
1.2 历史背景
20世纪,早期, 30年代 能否用有效的过程来求解问题受到关注
问题分类为:可解、不可解(存在有效过程来求解问题) 计算模型:存在模型,用此模型能建立一求解某问题的算法,--入- -可解的类 模型列举:歌德尔的递归函数,Church的Lamda演算,Post的波斯特机, Turing机。 Church论断:所有4个模型等效。如果一个问题在某一模型上可解,那么 在其他模型上都是可解的。=>“几乎所有”问题都是不可解的。
➢ 输入:一个算法有0个或多个输入,以刻画运算对象的初始情况; ➢ 输出:一个算法有一个或多个输出,以反映对输入数据加工后的
结果。没有输出的算法是毫无意义的; ➢ 可行性: 算法原则上能够精确地运行,而且人们用笔和纸做有限
次运算后即可完成。
2020/8/21
h
5
算法 几点说明
1. “算法”的 几个词:Algorithm、Logarithm、Algorism
2020/8/21
h
11
算法的描述方法
自然语言; 图表; 框图; 计算机语言或程序设计语言等。
如,汇编、C++、Java。
2020/8/21
h
12
1.3 二分搜索
• 假定元素满足:线序集合 • A[1…n] 中有x吗?
• 从头到尾的扫描,比较n次: 顺序搜索 • 顺序搜索适合无序的集合
• 有序的集合:BinarySearch P4
2020/8/21
h
2
Chapter 1 Basic Concepts in Algorithmic Analysis 内容
• 1.8 Time Complexity
• 1.8.1 Order of growth
• 1.8.2 The O-notation
• 1.8.3 The fl-notation
确定一个包含N个变量的多项式方程是否有整数解 简单理由陈述:P3Top
可判定性-〉可计算性理论, 可解性-〉计算理论; 有Digital Computer后,对可解问题的研究的要求越来越多。
程序,资源量,尽可能少使用资源(时间,空间)的有效算法的需求。 效率:指解决问题所需时间和空间 排序一组元素的算法作为研究的实例表明:设计了许多有效算法,解决 问题的效率将不会因其他方法而有大的提高。
• 要求能够写出:这个简单的算法,并分析
运算量。
2020/8/21
h
13
1.3- (例) 线性查找的时间评估
最小查找时间? 最好情况, A[1]=X
平均查找时间?P(i)=1/n, Tavg(n)=n/2
2020/8/21
h
10
算法的表达机制
【表达算法的选用该问题的一 个数学模型。
接着,弄清该问题数学模型在已知条件下的初 始状态和要求的结果状态,以及这两个状态之 间的隐含关系。
然后探索从数据模型的已知初始状态到达要求 的结果状态所需的运算步骤。