我知道气泡排序具有平均时间复杂度O(n^2)。有人能解释如何计算这种复杂性吗?我通常只看到人们说这是平均的复杂性,但我不知道为什么。(换句话说,数字从1到n的随机排列的平均复杂度是多少)
发布于 2015-03-14 15:51:10
如果复杂度为O(n^2),这意味着算法必须对输入的两个元素的每一个组合执行某种操作。
首先,请注意,Bubble排序比较相邻的项目,并在它们出现故障时交换它们。
在最佳情况下,气泡排序是O(n)。这时列表已经排序了。它可以通过列表一次,并且只需要将每一项与其邻居进行一次比较,然后才能确定它已经排序。
O(n^2)是气泡分类的最坏情况。这是当输入列表已经被反向排序时。考虑一下算法如何将第一个项从索引0
移动到它在索引n-1
中的排序位置。它必须将该项目与其他每一项进行一次比较(n次操作)。它对每个项目重复这个过程,因此O(n^2)。
https://stackoverflow.com/questions/29050765
复制相似问题