我是编程初学者,现在正在学习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,)
请告诉我应该在哪里更改或直接如何更改?谢谢。
答案 0 :(得分:1)
在最坏的情况下,Bubblesort算法的复杂性总是O(N^2)
,无论选择哪种编程语言来实现它。
答案 1 :(得分:0)
冒泡排序始终是N ^ 2运行时,无论初始列表的顺序如何,因为它总是遍历每个元素对。无论您要排序的列表的顺序如何,复杂性应该与您的代码相同,因此从这个意义上说,您的复杂性输出是正确的。如果你想要更好的复杂性,你需要一个不同的排序算法。