•2.3-7 请给出一个运行为Θ(nlgn)的算法(伪码),使之能在给定一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在有两个其和等于x的元素。
解:解题思路:先对集合S进行归并排序,然后新建一个数组S1,使得S1[i] = x – S[i],再将两个数组并起来。如果在并的过程中发现有两个元素相等且两个元素一个来自S,一个来自S1,则可以确定S中存在有两个其和等于x的元素。
Find whether x exits
1、Sort(S)
2、for i <- 0 to Length(S) – 1
3、 do S1[i] <- x - S[i]
4、for i <- 0 to Length(S) – 1
5、 do Merge( S,S1 )
6、 if S[p] > S1[q]
7、 S0[k] <- S[p] p++ k++
8、 if S[p] < S1[q]
9、 S0[k] <- S[q] q++ k++
10、 if S[p] == S1[q]
11、 return true
12、return false
在第一行进行排序时,时间代价为Θ(nlgn),后来的合并过程时间代价为Θ(n),总的时间代价为Θ(nlgn)。
分享到:
相关推荐
在这个压缩包中,包含了课后习题2.3-7“合并排序”和思考题2-4“逆序对”的解答源码。这两个问题都是围绕着算法设计和效率分析展开的,对于理解和掌握排序算法及其内在性质至关重要。 首先,我们来看课后习题2.3-7...
根据提供的信息,《算法导论习题解答》涵盖了重要的章节习题解答,这是一本非常有价值的参考资料,特别是对于学习算法的学生和专业人士来说。下面将详细解释并总结这些章节中的一些关键知识点。 ### 第2章 排序与...
根据提供的文件信息,可以看出这是一本关于《算法导论》习题解答的手册。下面将对文件中的几个关键章节进行详细解析,以便更好地理解其中所包含的重要知识点。 ### 一、算法在计算中的角色(第1章) 这一章主要...
根据提供的信息,《算法导论习题答案(中文版)》这本书是针对同名教材的一系列习题解答。原书深入探讨了多种类型的算法,并且力求让不同水平的读者都能理解和掌握算法的设计与分析方法。这份资源包含了从第2章到第...
综上所述,《算法导论习题答案》不仅提供了具体的习题解答,更重要的是通过这些练习帮助读者深刻理解算法设计与分析的基本概念和技术。这些章节涵盖的内容广泛,包括排序算法、递归算法、分治策略、数据结构(如二叉...
根据提供的信息,《算法导论习题答案(全)》涵盖了原书第二版的习题解答。这份资料提供了从第2章到第25章的详细解答,涉及算法的基础概念、设计与分析技巧等内容。下面将从给定的部分内容中提取并总结关键知识点。 ...
通过以上对《算法导论》课后习题的解答,我们可以看到,无论是基础的排序算法还是更复杂的搜索算法,都是建立在扎实的理论基础之上的。掌握这些核心算法不仅可以帮助我们解决实际问题,还能提高我们的编程能力和算法...
根据提供的信息,《算法导论答案(经典)》涵盖了多个章节的习题解答,涉及排序算法、分析技巧、分治策略等内容。以下是对这些章节中提到的一些关键知识点进行深入解析: ### 第2章 分析框架 #### 2.1 插入排序 - ...
#### 2.3-7 决策树 - 在这一节中,我们学习了决策树的基本概念以及它们是如何被用来表示比较排序算法的。决策树提供了一种直观的方式来理解排序算法,并帮助我们分析这些算法的下限。具体而言,对于任何给定的比较...
根据提供的信息,《算法导论答案》是一份针对第二版《算法导论》一书的部分章节习题解答。该文档包含了第2章至第25章(部分章节)的习题解答,采用PDF格式呈现。下面将针对提供的部分章节及其内容进行详细的知识点...
根据提供的信息,《算法导论第二版经典答案》涵盖了多个章节的习题解答,涉及了算法设计与分析的基础知识。下面将根据题目要求,详细解析部分章节中的知识点。 ### 第二章:分治策略 #### 2.1 分治法基础 - **2.1...