我制作了这个Pseudocode
A = 2,1,8,4,3,6
n = 6
i = 1
H = 2
inv = 0
while H <= n
if A[i] > A[H] && !H = n
inv = inv + 1
H = H + 1
else if A[i] > A[H] && H = n
inv = inv + 1
i = i + 1
H = i + 1
else if A[i] < A[H] && !H = n
H = H + 1
else if A[i] < A[H] && H = n
i = i + 1
H = i + 1
print inv
现在我需要计算这个算法的运行时间。如果有人和我一起采取措施并告诉我核心如何计算这个例子的运行时间,我真的会永远感到很有害。
我已经阅读了很多关于这个主题的指南和书籍。所有这些都提到了成本,单位,时间,常数等等。所有这些都让我更加困惑。我现在转向你们,作为最后的手段,希望能够充分理解这件事。
答案 0 :(得分:3)
我假设n
是输入的大小。
请注意,在循环的每一步中,H
总是增加1.此循环将一直运行到H
到达n
。因此,循环中的迭代次数为n-1
,因为H
在开始时设置为2。
此外,循环中的每个操作都是O(1)
。因此,该程序在O(N)
中运行。
修改强>:
要回答Nulle的评论,c1,c2,...
指的是常数。每个常数代表一定的时间。例如,for
循环可能花费c1
时间来完成循环的1次迭代。可能需要c2
时间来输出答案,初始化变量,设置循环等。因此,运行该时间为c1 * n + c2
。我们并不确切知道c1
和c2
是什么,因为它们因平台而异。有关详细信息,请参阅此link