算法设计与分析C++语言描述(陈慧南版)课后答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章

15P

1-3. 最大公约数为1。快1414倍。

主要考虑循环次数,程序1-2的while 循环体做了10次,程序1-3的while 循环体做了14141次(14142-2循环)

若考虑其他语句,则没有这么多,可能就601倍。 第二章

32P

2-8.(1)画线语句的执行次数为

log n ⎡⎤⎢⎥。(log )n O 。划线语句的执行次数应该理解为一格整体。

(2)画线语句的执行次数为

111

(1)(2)16

j

n

i

i j k n n n ===++=

∑∑∑。3

()n O 。

(3)画线语句的执行次数为

。O 。

(4)当n 为奇数时画线语句的执行次数为

(1)(3)

4

n n ++, 当n 为偶数时画线语句的执行次数为 2(2)4

n +。2

()n O 。

2-10.(1) 当 1n ≥ 时,225825n n n -+≤,所以,可选 5c =,01n =。对于0n n ≥,

22()5825f n n n n =-+≤,所以,22582()n n n -+=O 。

(2) 当 8n ≥ 时,2222582524n n n n n -+≥-+≥,所以,可选 4c =,08n =。对于0n n ≥,

22()5824f n n n n =-+≥,所以,22582()n n n -+=Ω。

(3) 由(1)、(2)可知,取14c =,25c =,08n =,当0n n ≥时,有222

12582c n n n c n ≤-+≤,所

以22

582()n n n -+=Θ。

2-11. (1) 当3n ≥时,3

log log n n n <<,所以()20log 21f n n n n =+<,3

()log 2g n n n n =+>。可选 21

2

c =

,03n =。对于0n n ≥,()()f n cg n ≤,即()(())f n g n =O 。注意:是f (n )和g (n )的关系。 (2) 当 4n ≥ 时,2

log log n n n <<,所以 2

2

()/log f n n n n =<,2

2

()log g n n n n =≥。可选 1c =,

04n =。对于 0n n ≥,2()()f n n cg n <≤,即 ()(())f n g n =O 。

(3)因为 log log(log )()(log )

n

n f n n n ==,()/log log 2n g n n n n ==。当 4n ≥ 时,log(log )

()n f n n

n =≥,

()log 2n g n n n =<。所以,可选 1c =,04n =,对于0n n ≥,()()f n cg n ≥,即 ()(())f n g n =Ω。

第二章 2-17. 证明:设

2i n =,则 log i n =。

()22log 2n T n T n n ⎛⎫⎢⎥=+ ⎪⎢⎥⎣⎦⎝⎭2222log 2log 222n n n T n n ⎡⎤

⎛⎫⎢⎥⎛⎫=+⨯⨯+⎢⎥ ⎪ ⎪⎢⎥⎣⎦⎝⎭⎝⎭

⎣⎦

()2222log log22log 2n T n n n n ⎛⎫

⎢⎥=+-+ ⎪

⎥⎣⎦⎝⎭

22222log 22n T n n n ⎛⎫

⎢⎥=+⨯- ⎪⎢

⎥⎣⎦⎝⎭

2

322222log 22log 2222n n n T n n n ⎡⎤⎛⎫⎢⎥=+⨯⨯+⨯-⎢⎥ ⎪⎢

⎥⎣⎦⎝⎭

⎣⎦ ()3322log log422log 22n T n n n n n ⎛⎫

⎢⎥=+-+⨯- ⎪⎢

⎥⎣⎦⎝⎭

33232log 242n T n n n n ⎛⎫

⎢⎥=+⨯-- ⎪

⎢⎥⎣⎦⎝⎭

=

()22log 24212k k n T kn n n n n k ⎛⎫

⎢⎥=+----- ⎪⎢

⎥⎣⎦⎝⎭

()()()1

2221log 2422i T i n n n n n i -=+----

--

()()()1

242log log 121i n n n i i n -=⨯+---- ()

2222log 2log log 3log 2n n n n n n n n =+---+ 2

log log n n n n =+

当2n ≥ 时,()22log T n n n ≤。所以,()()2log T n n n =O 。

第五章

5-4. SolutionType DandC1(int left,int right) {

while(!Small(left,right)&&leftP[m]) left=m+1; else return S(P) } }

5-7. template

int SortableList::BSearch(const T&x,int left,int right) const {

if (left<=right) { int m=(right+left)/3; if (xl[m]) return BSearch(x,m+1,right); else return m; } return -1; }

第五章 9.

4

2

6

3517

01234567

-10

证明:因为该算法在成功搜索的情况下,关键字之间的比较次数至少为log n ⎢⎥⎣⎦,至多为log 1n +⎢⎥⎣⎦。在

相关文档
最新文档