`
kofsky
  • 浏览: 201600 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

算法导论上几个简单的习题

阅读更多

5.1-2 用random(0,1)来实现random(a,b),并估计运行时间.
这个cu上面有讨论。http://bbs2.chinaunix.net/thread-1192193-1-1.html
我想了一个超级白痴的 random(a,b) = random(0,1)*(b-a)+a
不晓得cu上搞得这么复杂。怪也~

 

5.1-3 假设你希望以各1/2的概率输出0和1。你可以自由使用一个输出0和1的过程BIASED-RANDOM。它以概率p输出1,以概率1-p输出0,其中0<p<1,但是你并不知道p的值。给出一个利用BIASED-RANDOM作为子程序的算法,返回一个无偏向的结果,即以概率1/2返回0,以概率1/2返回1。作为p的函数,你的算法的期望运行时间是多少?
想了许久。。。嗯。没想出来。。。
NBIASED-RANDOM
while TRUE
do
x = BIASED-RANDOM
y = BIASED-RANDOM
if x != y
then return x
两个字:精妙....

 

10.1.6 说明如何用两个栈来实现一个队列,并分析有关队列操作的运行时间。
10.1.7 说明如何用两个队列来实现一个栈,并分析有关栈操作的运行时间。

用两个栈来实现队列比较简单,因为栈是先进后出,队列是先进先出,有两个栈,做两次先进后出,那么就成先进先出了(就有点负负得正的意思)。假设两个栈为A,B,入队的时候直接将数据压入第一个栈A,出队的时候直接从栈B出栈,若B为空,则将栈A数据全部弹出,一个一个的压入栈B。时间复杂度和标准队列一样,为O(1)。
用两个队列来实现栈就有点复杂了。队列是先进先出,两个先进先出合起来也还是先进先出啊,该怎么反过来呢?想到的办法是两个队列轮流存储数据。任意时刻一个队列为空,一个队列不为空。每次提取数据的时候,将非空队列的前n-1个数据转出到另外一个队列中。然后将第n个数据出队。每次入队都将数据添加在非空队列上。但这样子入队时间复杂度为O(1),出队时间复杂度为O(n),很大啊。有更好的办法么?

 

9.1-2 在最坏情况下,同时找到n个数字中的最大值和最小值需要 3/2n-2 次比较。
找到 最大值 需要比较 n-1 次
找到 最小值 需要比较 n-1 次
同时找到 最大值 和 最小值 需要 2n-2 次
该怎么减少到 3/2n-2次呢?
找到 最大值 的比较次数已经是最少的,已经不能再减少;找最小值也一样的,那该怎么减少呢?
问题的关键在于两者的结合,也就是要同时。对任意一个元素,它不可能同时为最大值和最小值。
在同时找到最大值和最小值时,每个元素都参与了与最大值和最小值的比较,比较了两次。将数组成对处理。两两互相比较,将大的与最大值比较,小的与最小值比较。每两个元素需要的比较次数是,两两比较一次,大者与最大值比较一次,小者与最小值比较一次,共三次。

《算法导论》习题答案和教师手册
http://blog.chinaunix.net/u/18517/showart_487811.html

分享到:
评论
2 楼 zolo1226 2011-02-20  
第一题解答有问题,式子没看出有什么意义
1 楼 breakhearts 2009-02-23  
你的第一题和最后一题都有问题,第一题random(0,1)不是返回0-1之间的小数,而是以1/2概率返回0或者1。最后一题是让你证明这个问题最少需要那么多次比较,你只是找了个算法,没证明那种是最优的。

相关推荐

    算法导论中文第三版习题答案

    在学习《算法导论》的过程中,读者会遇到各种类型的习题,包括但不限于以下几类: 1. 分析算法的时间复杂度和空间复杂度:这要求读者掌握大O表示法,理解算法效率的重要性,并能对算法进行准确的复杂度分析。 2. ...

    完整的算法导论习题答案 完整的算法导论习题答案

    标题和描述中提及的是“完整的算法导论习题答案”,这表明文档包含了针对《算法导论》一书中的练习题解答。《算法导论》是一本经典的计算机科学教材,由Thomas H. Cormen、Charles E. Leiserson、Ronald L. Rivest等...

    《算法导论》习题解答

    ### 《算法导论》习题解答概览 #### 标题解读 - **标题**:“《算法导论》习题解答”明确指出这是一份针对著名计算机科学教材《算法导论》(由Thomas H. Cormen、Charles E. Leiserson、Ronald L. Rivest等作者编写...

    算法导论第十九章习题解答

    本章节的习题解答将涵盖以下几个关键知识点: 1. 图的基本概念:包括图的定义、有向图与无向图、加权图、树(一种特殊的图)以及图的表示方法,如邻接矩阵和邻接表。 2. 深度优先搜索(DFS):这是一种遍历或搜索...

    算法导论第三版课后习题答案

    《算法导论第三版》是计算机...综上所述,“算法导论第三版课后习题答案”不仅提供了具体的习题解答,还深入解析了算法的设计原理、复杂性分析以及实际应用场景,对于深入理解算法、提高编程能力具有重要的指导意义。

    算法导论 练习题答案

    ### 知识点总结 #### 1....以上知识点涵盖了算法导论的核心内容,包括基本概念、设计技巧和具体算法实例。这些知识点不仅是学习算法的基础,也是计算机科学专业学生和技术从业者必须掌握的重要技能。

    算法导论习题解答

    在《算法导论》中,习题解答通常会涉及以下几个关键知识点: 1. **排序算法**:包括冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序等。这些排序算法各有优缺点,理解它们的工作原理和时间复杂度对于...

    算法导论课后习题与思考题答案合集

    - **多做练习题**:通过大量的习题练习来巩固所学知识,提高解决实际问题的能力。 - **参与讨论和合作**:与其他学习者一起讨论和解决难题,可以加深对知识点的理解。 - **实践应用**:尝试将所学算法应用到实际项目...

    算法导论章节答案(16~20章)

    《算法导论》是计算机科学领域的一本经典教材,涵盖了广泛的算法理论与实践知识。针对16至20章的内容,我们将深入探讨以下几个关键知识点: 第16章:图算法 这一章主要介绍图的基本概念,包括有向图、无向图、树...

    算法导论-习题答案-含全部课后习题详细解答

    #### 算法导论-习题答案-含全部课后习题详细解答 **知识点概述:** 本资料为《算法导论》(第二版)一书的教师手册,提供了全书各章节课后习题的详细解答。该书由Thomas H. Cormen、Charles E. Leiserson、Ronald ...

    算法导论答案第四版英文版

    这个英文版的答案集涵盖了《算法导论》第四版的所有习题解答,对学习者来说是一份宝贵的资源。通过这些答案,读者可以检查自己的解题思路是否正确,理解算法的实现方式,以及学习如何分析算法的时间和空间复杂度。 ...

    算法导论习题答案

    习题答案通常包括以下几个方面的内容: 1. **算法设计**:习题会引导你设计新的算法来解决特定问题。这可能涉及到数据结构的选择,如栈、队列、树、图等,以及如何有效地操作这些结构。 2. **算法分析**:理解一个...

    算法导论往年真题

    通过反复练习《算法导论》历年真题,可以有效检验和巩固上述知识点的掌握程度。做题过程中,不仅要关注答案的正确性,更要注重理解每道题背后的算法思想和解题策略。同时,对于难题,可以尝试不同的解法,对比分析,...

    MIT版算法导论习题答案

    文件"算法导论习题答案"包含了书中所有习题的解答,这些解答通常包括以下几个方面: 1. **问题解析**:清晰地解释问题的本质,指出解决该问题的关键步骤和思考方向。 2. **算法设计**:详述解决问题所采用的算法,...

    算法导论(中文版)习题答案

    从给定的文件信息中,我们可以提取到关于《算法导论》一书的习题解答相关的几个关键知识点,包括但不限于算法复杂度分析、排序算法(插入排序与归并排序)、线性搜索算法以及循环不变量的概念。下面将对这些知识点...

    算法导论习题算法导论习题解答

    - **描述**:“算法导论习题解答算法导论习题解答算法导论习题解答算法导论习题解答”:强调文档内容为《算法导论》习题解答的汇总。 #### 内容解析 ##### 1. 插入排序与归并排序比较 - **关键点**:“插入排序在...

    算法导论答案.pdf

    - 该文档主要用于帮助学生理解《算法导论》一书中的练习题解答。作者强调,学生应该首先尝试自己解决问题,而不要依赖该文档。文档还提醒读者注意其中可能存在的错误,并欢迎读者提出更好的解决方案或提供有用的反馈...

Global site tag (gtag.js) - Google Analytics