这个冒泡排序逻辑正确吗

时间:2020-07-30 21:20:19

标签: python python-3.x list bubble-sort

我在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)

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

先谢谢您了:D

1 个答案:

答案 0 :(得分:2)

该算法是冒泡排序,但有不必要的比较。您可以对所有n个元素进行n次迭代排序。但是在第一次保证之后,最大值位于最后一个位置,因此在下一步中只需要遍历前n-1个元素,依此类推。在您的算法中,您只是继续到最后。这样做并没有错,但是效率不高。但是,它不会改变O(n ^ 2)的时间复杂度。

编辑: 回应一些评论:是的,通常,您不使用冒泡排序来提高效率。但是在某些情况下,它的表现相当不错(通过优化,您可以在没有变化的情况下进行一次迭代就停止),也就是说,如果您的列表几乎已排序。

相关问题