【发布时间】:2013-03-14 10:43:58
【问题描述】:
我在理解如何计算以下算法的原始操作时遇到了一些困难。
我知道步骤的计算是这样的:
(1) = 1 步:赋值
(2) = 1 步:分配
(3) = 3+(n-1) 步骤:3 次比较,经历 (n-1) 次
(4) = 1 步:分配
(5) = 2+(n-2):赋值和比较经历了(n-1)+(n-2)+...+2+1=(n-1)n/2次
(6) = 3步:两个数组,一个比较[
(7) = 4 步:两个数组,一个操作 [-] 和对交换的函数调用,这是第 3 步 n(1)
(8) = 2 步:赋值和加法运算
我可以推断出最坏的情况是 (n^2+n+2n+2) = O(n^2) 因为最坏的情况是当列表以第一个值作为大数排序时最后一个值是最小值,它是从 i=0 到 n (i-1) 的总和。
当列表已经排序时也是最好的情况,这意味着列表将以恒定速度运行。
我的问题是找到如何从算法中收集原始操作,这样我就可以通过计算 c 和 n_0 用 Ordo 的定义自己证明这一点。
【问题讨论】:
标签: algorithm bubble-sort asymptotic-complexity