您的位置:首页 > 其它

算法导论读书笔记:冒泡排序法、多项式计算及霍纳规则原理分析

2018-01-12 18:27 375 查看
思考题2-2 问题描述:冒泡排序(Bubblesort)算法是一种流行的排序算法,它重复地交换相邻的两个反序元素。其伪代码为:
BUBBLESORT (A)
for i ← 1 to length(A)
for j ← length(A) down to i + 1
if A[j] < A[j - 1]
exchange A[j] ↔ A[j - 1]
冒泡排序算法的最坏情况运行时间是什么?算法的运行时间主要取决于第2-4行的for循环,给定i的值,循环进行了n-i次迭代,而i的取值为1,2,…,n,则总的运行次数为:思考题 2-3 多项式计算以及霍纳规则:对于多项式P(n)\[P(n) = \sum\limits_{k = 0}^n {{a_k}{x^k} = {a_0} + x({a_1} + x({a_2} + ... + x({a_{n - 1}} + x{a_n})))} \]1. 采用直接迭代计算:伪代码为:
sum= 0
for k ← 0
sum ← sum + * xk ^ k
对于每个k,假设幂运算是元素多次相乘以及加法和乘法指令的时间一样,则每次迭代sum+ ak * x ^ k 的计算复杂度为 k + 2,总的计算时间为:\[T(n) = {c_1}n + {c_2}((0 + 2) + (1 + 2) + ... + (n + 2)) = {c_1}n + {c_2}\frac{{(n + 1)(n + 4)}}{2}\]对于每个k,假设幂运算是元素多次相乘以及加法和乘法指令的时间一样,则每次迭代sum+ ak * x ^ k 的计算复杂度为 k + 2,总的计算时间为:\[T(n) = {c_1}n + {c_2}((0 + 2) + (1 + 2) + ... + (n + 2)) = {c_1}n + {c_2}\frac{{(n + 1)(n + 4)}}{2}\] 即时间复杂度为O(x^2)。2. 采用霍纳规则计算多项式:\[P(n) = {a_0} + x({a_1} + x({a_2} + ... + x({a_{n - 1}} + x{a_n})))\] 对上述等效计算多项式,霍纳规则的伪代码为:
y ← 0
i ← n
while i >= 0
do y ←  ak + x * y
i  =  i - 1
对于每个i,其时间复杂度为2,则采用霍纳规则计算多项式的计算时间为:\[T(n) = {c_1}n + {c_2} \times 2 \times n = ({c_1} + 2{c_2})n\] 即时间复杂度为O(n)。对比直接迭代计算多项式,霍纳规则在时间复杂度上要优很多。

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: