1

我在理解如何计算以下算法的原始操作时遇到了一些困难。

图片

我知道步骤的计算是这样的:

(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 的定义自己证明这一点。

4

1 回答 1

0

当有人说排序算法具有特定的时间复杂度时,他们通常指的是所需的比较次数。正如您已经完成的那样,您需要计算元素之间的比较次数并找出常量。

于 2013-03-14T18:43:20.143 回答