python 算法 -- 冒泡排序

python 排序算法 -- 冒泡排序

原理

从数组的底部开始, 两两比较大小, 小的在下,大的在上, 依次类推直到顶部. 当整个数组比较完毕, 则最上面的一定是最大值(此即冒泡的由来); 当第一轮比较完毕, 重新从底部开始比较, 此轮比较完毕, 则次大的排在第二位, 依次类推.

实现

1. 使用 reduce, 并创建新的数组
def com(a,b):
    return a if a > b else b

l = [33,22,1,23,65,24,5,75,34]
l2 = []
len_l = len(l)

for i in range(len_l):          # 注意 : 此处不要使用 `for i in l` , 因为, l.remove() 会使 l 的长度发生变化, 而导致失败.
    max=reduce(com, l)
    l2.insert(0, max)
    l.remove(max)

print l2        # 此 l2 就是排序后的数组
2. 使用 for 循环, 比较符合上面的原理描述, 但是有点绕
li = [33,22,1,23,65,24,5,75,34]

for i in range(1, len(li)):
    for n in range(len(li) - i):
        if li[n] > li[n+1]:
            li[n],li[n+1] = li[n+1],li[n]
posted @ 2017-03-03 10:12  眼镜男  阅读(186)  评论(0编辑  收藏  举报