[python] 冒泡排序

冒泡排序:

算法思想(从小到大排列):从队列的一端开始两两比较,如果前面的数字大于后面的数字,那么则交换两个位置的值,同时下标向后移动一位(由0变为1)。然后再和后面的数值进行比对如果还大于后面的就再进行交换。如果后面的数值大就不交换,仅仅移动下标位置即可。这样经过一次比较之后就把最大的那个数交换到了最后一个位置上。假如一共有n个数字,那么需要循环n-1次才能排序完成。

def bubble_sort(arr):
    for i in range(0, len(arr)-1):
        judge = 0
        for j in range(0, len(arr)-1-i):
            if arr[j] > arr[j+1]:
                temp    = arr[j]
                arr[j]  = arr[j+1]
                arr[j+1]= temp
                judge = 1
        if judge == 0:
            return arr
    return arr
    
if __name__ == "__main__":
    arr = [1,4,2,5,77,43,2,4,56,43,79,0]
    print(bubble_sort(arr))

当没有 judge 的时候,及时队列是完全有序的也将会进行n-1次循环,所以judge可以用于判断队列的排序是否已经完成。

发表评论

电子邮件地址不会被公开。 必填项已用*标注