冒泡排序最好时间复杂度为什么是O(n)?

来源:互联网 发布:长途搬家怎么划算 知乎 编辑:程序博客网 时间:2024/05/17 01:44

blog链接:http://www.cnblogs.com/melon-h/archive/2012/09/20/2694941.html

通过上面的博客我知道了:

按照最初级的一般写法,每一次循环都比较相邻数据的大小,原数据是否有序不会影响比较次数,此时时间复杂度是O(n^2).

而网上和书上的很多说O(n)是因为加了优化。初始didswap=false. 当发生一次交换就将didswap置为true,这样如果原始有序,那么一次扫描完一次交换也不会有,即didswap=false,此时return,终止排序。此时时间复杂度是O(n).note:原始数据只要有一对需要改顺序,复杂度就又会变成O(n^2)的。

0 0
原创粉丝点击