教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 互联网资料 >

计算机图形学算法答案(4)

来源:网络收集 时间:2026-09-19
导读: c. 键值比较次数M(n) M(n)=2M(n)+2n for n>1 M(1)=0 习题4.2 1.应用快速排序对序列E,X,A,M,P,L,E按字母顺序排序 16 4. 请举一个n个元素数组的例子,使得我们有必须对它使用本节提到的”限位器”.限位器的值应 是多少

c. 键值比较次数M(n)

M(n)=2M(n)+2n for n>1 M(1)=0

习题4.2

1.应用快速排序对序列E,X,A,M,P,L,E按字母顺序排序

16

4. 请举一个n个元素数组的例子,使得我们有必须对它使用本节提到的”限位器”.限位器的值应

是多少年来?为什么一个限位器就能满足所有的输入呢?

Hints:

With the pivot being the leftmost element, the left-to-right scan will get out of bounds if and only if the pivot is larger than the other elements.

Appending a sentinel(限位器) of value equal A[0](or larger than A[0]) after the array’s last element , the quicksort algorithms will stop the index of the left-to-right scan of A[0..n-1] from going beyond position n.

8.设计一个算法对n个实数组成的数组进行重新排列,使得其中所有的负元素都位于正元素之前.这个算法需要兼顾空间和时间效率. Algorithms netbeforepos(A[0..n-1]) //使所有负元素位于正元素之前 //输入:实数组A[0..n-1]

//输出:所有负元素位于于正元素之前的实数组A[0..n-1] A[-1]←-1; A[n]←1 //限位器 i←0; j←n-1 While i

While A[i]≤0 do

i←i+1 j←j-1 while A[j]≥0 do swap A[i]and A[j]

swap A[i]and A[j] //undo the last swap

当全是非负数或全是非正数时需要限位器. 习题4.3 1.(题略)

17

解: a.由公式4.4得:4次 b.二分查找判定树: 所以,14,31,42,74,85,98需要比较4次 c. Cd. yesavg?113114?1?1?113114?2?2?113?3?4?113?4?6?4113?3.2 Cnoavg??3?2??4?12?5414?3.9 2. 当n=2k时,用反向替换法求下面的递推方程: 当n>1时, Cw(n)=Cw(n/2)+1, Cw(1)=1 (略) 4.如果对于一个100000个元素的数组成功查找的话,使用折半查找比顺序查找要快多少倍?

6. 如何将折半查找应用于范围查找?范围查找就是对于一个有序数组,找出位于给定值L、U之间(包含L、U)的所有元素,L<=U。该算法的最差效率是多少? Hints: Step1: 检查A[0]≤L,A[n-1]≥U是否成立,若不成立,则无解。否则进入step 2 Step2:在数组A中用二分查找法查找值L,如果查找成功,则返回数组下标m,否则l二分查找结束时的值. Step3: 在数组A中用二分查找法查找值U,如果查找成功,则返回数组下标m,否则r为二分查找结束时的值. 最后,结果就是在数组序号范围在low和high(包含low,high)之间的范围。(low和high是step2和step3的值。) 7. 为折半查找写递归的伪代码。 Algorithms BSR(A[o..n-1],K)

18

//折半查找递归算法 //有序子数组A[l..r]和查找键值K //查找成功则输出其下标,否则输出-1 if l>r return -1 else m← (l+r)/2 if K=A[m] return m else if K< A[m] return BSR(A[l..m-1],K) else if K> A[m] return BSR(A[m+1,r],K) 8.设计一个只使用两路比较的折半查找算法,即只用≤和=, 或者只用≥和=. Algorithms TwoWaysBinarySearch(A[o..n-1],K) //二路比较的折半查找 //有序子数组A[l..r]和查找键值K //查找成功则输出其下标,否则输出-1 l←0, r←n-1 while l

19

Preorder(TR) 递归调用次数C(n)=扩展树中内部结点+外部结点=n+(n+1) =2n+1 7.设计一个算法计算有根有序树的高度. Algorithms height(T) //递归计算有根有序树的高度 //输入:一棵有根有序树的高度T //输出:T的高度 i=NumChildren(T) //根的孩子个数 if i=0 return 0 else return max{height(T1),height(T2),…,height(Ti)}+1 8.下面的算法试图计算一棵二叉树中叶子的数量 Algorithms LeafCount(T) //递归计算二叉树中叶子的数量 //输入:一棵二叉树 //输出:T中叶子的数量 if T=NULL return 0 else return LeafCount(TL)+LeafCount(TR) 应为: if T=NULL return 0 //empty tree else if TL =NULL AND TR=NULL return 1 //single-node tree else return LeafCount(TL)+LeafCount(TR) //general case 习题4.6 1.a.为最近对问题的一维版本设计一个直接基于分治技术的算法,并确定它的效率类型 b.对于这个问题,它是一个好算法吗? 解: a. Algorithms ClosestNumber(A[l..r]) //分治计算最近对问题的一维版本 //输入:升序排列的实数子数组A[l..r] //输出:最近数对的距离 If r=l return ∞ Else if r-l=1 return A[r]-A[l] Else return min{ClosestNumber(A[l… (l+r)/2 ]), ClosestNumber(A[ (l+r)/2 ...r]) A[ (l+r)/2 +1]-A[ (l+r)/2 ] } 设递归的时间效率为T(n): 对n=2k, 则: T(n)=2T(n/2)+c 利用主定理求解.T(n)=Θ(n) 2.(题略)

20

…… 此处隐藏:659字,全部文档内容请下载后查看。喜欢就下载吧 ……
计算机图形学算法答案(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/446066.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)