我是靠谱客的博主 清新鸵鸟,最近开发中收集的这篇文章主要介绍算法导论第三版习题7.17.1-17.1-27.1-37.1-4,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

7.1-1

(a) 首先 x=A[12]=11,i=0,j=1 ,此时我们比较 A[1]xA[1]>x ,故令 j=j+1=2
(b) 然后比较 A[2]xA[2]>x ,故继续令 j=j+1=3
(c) 比较 A[3]xA[3]<x ,故令 i=i+1=1 ,并交换 A[i] A[1] A[3] 得到新数组 A1=9,19,13,5,12,8,7,4,21,2,6,11}
(d) 重复上述过程,最后得到序列 A2={9,5,8,7,4,2,6,12,21,13,19,11} ,此时 i=7,j=11 ,交换 A[i+1] A[8]A[12] ,最终得到 A3={9,5,8,7,4,2,6,11,12,21,13,19} ,并返回 i+1=8

7.1-2

返回的 q=r
在算法中加入一个计数器即可:

PARTITION_1(A,p,r)
1  x = A[r]
2  i = p - 1
3  count = 0
4  for j = p to r - 1
5    if A[j]<= x
6      if A[i] == x
7        count = count + 1
8      i = i + 1
9      exchange A[i] with A[j]
10 if count == r - p + 1
11   return lfloor (p + r)/2 rfloor
12 exchange A[i + 1] with A[r]
13 return i + 1

7.1-3

在规模为 n 的子数组运行PARTITION需要进行n1次比较,每次比较时间复杂度为 Θ(1) ,所以整个算法的复杂度为 Θ(n)

7.1-4

将PARTITION算法的第4行换为 A[j]x 即可。

最后

以上就是清新鸵鸟为你收集整理的算法导论第三版习题7.17.1-17.1-27.1-37.1-4的全部内容,希望文章能够帮你解决算法导论第三版习题7.17.1-17.1-27.1-37.1-4所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部