使用冒泡排序

时间:2019-05-16 16:57:29

标签: python bubble-sort

我想创建一个使用冒泡排序技术对数组进行排序的程序,但是只发生第一次迭代。我需要帮助来了解为什么会这样。

a=[10,4,5,2,0,6]
def srt(element):
    element1=element[:]
    element2=element[:]
    idx=1
    for x in element:
        for y in element2[idx:]:
             if x>y:
                element1[idx]=x
                element1[idx-1]=y
                print(element1)
                idx+=1
             else:
                pass 

我想显示排序的所有步骤

1 个答案:

答案 0 :(得分:2)

您的代码在语义上是错误的。您不是在比较相邻的元素。

您的代码...

for x in element:
            for y in element2[idx:]:
                 if x>y:

会将列表的第一个元素与列表中从idx开始的所有其他元素进行比较。

气泡排序通过比较相邻元素并将“最大/最小”元素“冒泡”到每次遍历列表的末尾而起作用。

在Interactivepython.org上找到的这段代码通过从列表的开头迭代到(len of list) - (number of iterations)来工作,因此在第一次传递时,它将最大的元素冒泡到列表的末尾。在第二遍时,它将第二个最大的元素冒泡到列表中的倒数第二个位置……等等。

def bubbleSort(alist):
    for passnum in range(len(alist)-1,0,-1):
        for i in range(passnum):
            if alist[i]>alist[i+1]:
                temp = alist[i]
                alist[i] = alist[i+1]
                alist[i+1] = temp

https://interactivepython.org/runestone/static/pythonds/SortSearch/TheBubbleSort.html