这个Bubble排序逻辑正确吗



我在youtube上看到了一些关于列表排序技术、气泡排序的视频,他们使用的代码是

list1 = [4, 8, 5, 3, 1]
for i in range(len(list1)-1, 0, -1):
for j in range(i):
if list1[j] > list1[j+1]:
t = list1[j]
list1[j] = list1[j+1]
list1[j+1] = t
print(list1)

在没有python的情况下,我自己取了不同的列表并对它们进行排序后,我发现了一个模式,并对代码进行了轻微的安排,我得到了相同的输出。

list1 = [4, 8, 5, 3, 1]
for i in range(1,len(list1)):
for j in range(len(list1)-1):
if list1[j] > list1[j+1]:
t = list1[j]
list1[j] = list1[j+1]
list1[j+1] = t
print(list1)

但在这里,我只想知道逻辑是否相同,方法是否也是气泡排序,因为将来当要求我进行气泡排序时,我不想这样做,最终会感到尴尬:p

提前感谢:D

算法是冒泡排序,但有不必要的比较。通过对所有n个元素进行n次迭代来对其进行排序。但在第一次保证之后,最高值在最后一个位置,所以你只需要在下一步中遍历前n-1个元素,以此类推。在你的算法中,你只需要继续到最后。这并不意味着它是错误的,但在没有那么有效。然而,它不会改变O(n^2(的时间复杂性。

编辑:回复一些评论:是的,一般来说,为了效率,你不会使用冒泡排序。但有一种情况,它表现得很好(在优化中,当有一次迭代没有更改时,您会停止(,那就是如果您有一个几乎排序的列表。

最新更新