我刚刚开始学习数据结构,我很乐意提供一些帮助。 假设我有一个用于A数组的选择排序函数的伪代码:
到目前为止我所知道的: 句子#1运行n次(如果你计算i--那么在这个句子中采取的步数是2n)
句子#2运行n - 1次。
现在对于第3号句子而言,我开始感到困惑: no.3从我所理解的运行$$ \ sum_ {i = 1} ^(n-1)i $$
第4句运行与3号中相同的步数仅减去1.这意味着:$$ \ sum_ {i = 1} ^(n-1)i -1 $$
第5句我不知道如何计算。我的意思是 - 对于最坏的情况,它应该是第4号,并且最好的情况下它应该是0.但是无论如何在任何情况下以数学方式编写它?
no.6采取第2步的步骤。
我非常感谢你的帮助。 < 3
P.s - 我知道Big O作弊表,我知道这个函数的最坏情况是O($$ n ^ 2 $$)
P.s no.2 - 如果有人知道为什么mathjax在这里不起作用我会很高兴知道我可以在这里使用哪些替代品。
答案 0 :(得分:0)
你有,基本上:
for i = n downto 1
for j = i-1 downto 1
外循环运行n次。内循环在第一次迭代中运行(n-1)次,对于第二次迭代运行(n-2)次,等等。因此内循环的迭代次数为:
(n-1)+(n-2)+(n-3)...(n-n)
这基本上是sum of numbers from 1 to n-1,使得渐近复杂度为O(n ^ 2)。