算法设计和分析C++语言描述[陈慧南版]课后答案解析.docVIP

  • 44
  • 0
  • 约5.89千字
  • 约 10页
  • 2018-11-29 发布于安徽
  • 举报

算法设计和分析C++语言描述[陈慧南版]课后答案解析.doc

专业整理 WORD完美格式 第一章 1-3. 最大公约数为1。快1414倍。 主要考虑循环次数,程序1-2的while循环体做了10次,程序1-3的while循环体做了14141次(14142-2循环) 若考虑其他语句,则没有这么多,可能就601倍。 第二章 2-8.(1)画线语句的执行次数为。。划线语句的执行次数应该理解为一格整体。 (2)画线语句的执行次数为 。。 (3)画线语句的执行次数为 。。 (4)当n为奇数时画线语句的执行次数为 , 当n为偶数时画线语句的执行次数为 。。 2-10.(1) 当 时,,所以,可选 ,。对于,,所以,。 (2) 当 时,,所以,可选 ,。对于,,所以,。 (3) 由(1)、(2)可知,取,,,当时,有,所以。 2-11. (1) 当时,,所以,。可选 ,。对于,,即。注意:是f(n)和g(n)的关系。 (2) 当 时,,所以 ,。可选 ,。对于 ,,即 。 (3)因为 ,。当 时,,。所以,可选 ,,对于,,即 。 第二章 2-17. 证明:设,则 。 当 时,。所以,。 第五章 5-4. SolutionType DandC1(int left,int right) { while(!Small(left,right)leftright) { int m=Divide(left,right); if(xP(m) right=m-1; else if(xP[m]) left=m+1; else return S(P) } } 5-7. template class T int SortableListT::BSearch(const Tx,int left,int right) const { if (left=right) { int m=(right+left)/3; if (xl[m]) return BSearch(x,left,m-1); else if (xl[m]) return BSearch(x,m+1,right); else return m; } return -1; } 第五章 9. 证明:因为该算法在成功搜索的情况下,关键字之间的比较次数至少为,至多为。在不成功搜索的情况下,关键字之间的比较次数至少为,至多为。所以,算法的最好、最坏情况的时间复杂度为。 假定查找表中任何一个元素的概率是相等的,为,那么, 不成功搜索的平均时间复杂度为, 成功搜索的平均时间复杂度为。 其中,是二叉判定树的内路径长度,是外路径长度,并且。 11. 步数 0 1 2 3 4 5 初始时 1 1 1 1 1 1 [1 1] 1 [1 1] ∞ 2 [1] 1 1 [1 1] ∞ 3 1 1 1 [1 1] ∞ 4 1 1 1 [1] 1 ∞ 排序结果 1 1 1 1 1 ∞ 步数 0 1 2 3 4 5 6 7 初始时 5 5 8 3 4 3 2 ∞ 1 [4 2 3 3] 5 [8 5] ∞ 2 [3 2 3] 4 5 [8 5] ∞ 3 [3 2] 3 4 5 [8 5] ∞ 4 [2] 3 3 4 5 [8 5] ∞ 5 2 3 3 4 5 [5] 8 ∞ 排序结果 2 3 3 4 5 5 8 ∞ 12.(1)证明:当或或时,程序显然正确。 当n=right-left+12时,程序执行下面的语句: int k=(right-left+1)/3; StoogeSort(left,right-k); StoogeSort(left+k,right); StoogeSort(left,right-k); = 1 \* GB3 ①首次递归StoogeSort(left,right-k);时,序列的前2/3的子序列有序。 = 2 \* GB3 ②当递归执行StoogeSort(left+k,right);时,使序列的后2/3的子序列有序

文档评论(0)

1亿VIP精品文档

相关文档