冒泡排序

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

def bubbleSort(seq):
    for i in range(len(seq)):
        for j in range(len(seq) - 1, i, -1):
            if seq[j] < seq[j - 1]:
                seq[j - 1], seq[j] = seq[j], seq[j - 1]


if __name__ == '__main__':
    seq = [4, 6, 2, 5, 7, 9, 8, 1]
    bubbleSort(seq)
    print(seq)

冒泡过程中添加是否有序监听

一个小优化:一旦发现数组有序就立即返回,避免不必要的遍历

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

def bubbleSort(seq):
    for i in range(len(seq)):
        issorted = True
        for j in range(len(seq) - 1, i, -1):
            if seq[j] < seq[j - 1]:
                issorted = False
                seq[j - 1], seq[j] = seq[j], seq[j - 1]
        if issorted == True:
            return


if __name__ == '__main__':
    seq = [4, 6, 2, 5, 7, 9, 8, 1]
    bubbleSort(seq)
    print(seq)