Python中的冒泡排序复杂性

时间:2017-03-10 16:21:36

标签: python sorting

我是编程初学者,现在正在学习Pyhon。我在互联网上看到许多泡泡排序使用两个循环。我理解它,但我想在循环时使用自己的编写。我终于写了它,它的工作原理。我的代码很复杂,可能很糟糕。有人说我,如果我改变它会“更快”。 例如,当我输入6个未分类的数字时,复杂度为25.但是当我输入6个有序数字(例如1,2,3,4,5,6)时,复杂性仍然是25.当我考虑它时,复杂性应该是6或5 ,不是吗?我添加了其他一些条件,但没有工作。

lst=[]
number=""
while number!="k":
    number=input("Enter a nubmer (to end press K): ")
    if number!="k":
        number=int(number)
        lst.append(number)
print("Numbers before: ",lst,)

repetition=len(lst)-1
index=0
complexity=0
while repetition>0:
    repetition=repetition-1
    while index<=len(lst)-2:
        complexity=complexity+1
        if lst[index]>lst[index+1]:
              hlp=lst[index]
              lst[index]=lst[index+1]
              lst[index+1]=hlp
        index=index+1        
    index=0

print("Numbers after: ",lst,)
print("Complexity:",complexity,)

请告诉我应该在哪里更改或直接如何更改?谢谢。

2 个答案:

答案 0 :(得分:1)

在最坏的情况下,Bubblesort算法的复杂性总是O(N^2),无论选择哪种编程语言来实现它。

答案 1 :(得分:0)

冒泡排序始终是N ^ 2运行时,无论初始列表的顺序如何,因为它总是遍历每个元素对。无论您要排序的列表的顺序如何,复杂性应该与您的代码相同,因此从这个意义上说,您的复杂性输出是正确的。如果你想要更好的复杂性,你需要一个不同的排序算法。