算法设计与分析学习笔记与习题3

本文探讨了算法设计与分析中的分治策略,包括递归方程T(n)=a×T(n/b)+f(n)的O(nlogn)解证明、分治算法求解n个数字之和的时间复杂度分析,以及有序表合并问题的O(r)时间算法设计。通过对这些实例的详细解析,展示了分治策略在解决复杂问题时的有效性。
摘要由CSDN通过智能技术生成

蛮力法

在这里插入图片描述
1、对 f ( n ) = n f(n) = n f(n)=n, 并且 a = b a = b a=b 的情况,证明递归方程 T ( n ) = a × T ( n / b ) + f ( n ) T(n) = a \times T(n/b) + f(n) T(n)=a×T(n/b)+f(n) 的解为 O ( n log ⁡ n ) O(n \log n) O(nlogn).

证明:由 f ( n ) = n f(n) = n f(n)=n, f ( n ) ∈ Θ ( n d ) f(n) \in \Theta (n^d) f(n)Θ(nd) ,得 d = 1 d = 1 d=1
a = b a = b a=b,即要求我们证明 T ( n ) ∈ Θ ( n l o g ⁡ n ) T(n) ∈ \Theta (n log⁡n ) T(n)Θ(nlogn)。不失一般性, 假定 n 为 a 的整幂,
即存在正整数 k,使得 n = a k n = a^k n=ak 。同时假定 T ( 1 ) T(1) T(1) 为常数,当 n > 1 n > 1 n>1 时, 则:
T ( n ) = a × T ( n / a ) + n T(n)= a \times T(n/a)+ n T(n)=a×T(n/a)+n
= a ⋅ ( a ⋅ T ( n / a 2 ) + n / a ) + n = a \cdot (a \cdot T(n/a^2)+n/a)+n =a(aT(n/a2)+n/a)+n
= a 2 ⋅ T ( n / a 2 ) + 2 n = a^2 \cdot T(n/a^2)+2n =a2T(n/a2)+2n
= a k ⋅ T ( n / a k ) + k n =a^k \cdot T(n/a^k)+kn =akT(n/ak)+kn
因为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值