我正在查看wiki中的冒泡排序算法,似乎最糟糕的情况是o(n2)
。
我们来看一个array size
的n。
int a = [1,2,3,4,5.....n]
对于任何n个元素,因此比较总数为(n - 1) + (n - 2)...(2) + (1) = n(n - 1)/2 or O(n2)
。
任何人都可以解释我n(n-1)/2
如何等于o(n2)
。我无法理解他们如何得出结论,这个算法的最坏情况分析是o(n2)
答案 0 :(得分:0)
他们正在研究N越来越接近无穷大的情况。因此n(n-1)/2
实际上与n*n/2
或n^2 / 2
相同。
因为他们只关注时间(运行所需的时间)随着N的增加而增加,这意味着常数是无关紧要的。在这种情况下,当N加倍时,算法执行需要4倍的时间。因此,我们最终得到n^2
或O(n^2)
。