美文网首页
python排序算法之一:冒泡排序(及其优化)

python排序算法之一:冒泡排序(及其优化)

作者: 栈先生 | 来源:发表于2019-12-05 20:49 被阅读0次

    普通版:

    def bubble_sort(nums):
        for i in range(len(nums) - 1):  
            for j in range(len(nums) - i - 1):    
                if nums[j] > nums[j + 1]:
                    nums[j], nums[j + 1] = nums[j + 1], nums[j]
        return nums
    

    动态展示一下冒泡排序过程:


    image.png

    假设现在有一个数组[6,1,2,3,4,5],当我们进行完第一次冒泡排序过程后变为[1,2,3,4,5,6],这时候数组已经变成有序的了,程序要是再继续循环岂不是一直在做无用功,那怎么知道数组已经是有序的了呢?计算机又不跟你我一样能眼观大局,它看不到怎么办呢,于是它就再试一次呗,接下来再进行一次冒泡排序,1和2, 2和3, 3和4, 4和5, 5和6(好累,幸亏就tm六个数)依次冒泡。

    优化版:(添加一个判断位)

    def bubble_sort(nums):
    
        for i in range(len(nums) - 1):  
            ex_flag = False  # 改进后的冒泡,设置一个交换标志位
            for j in range(len(nums) - i - 1):  
                
                if nums[j] > nums[j + 1]:
                    nums[j], nums[j + 1] = nums[j + 1], nums[j]
                    ex_flag = True
            if not ex_flag:
                return nums  # 这里代表计算机偷懒成功 (〃'▽'〃)
    
        return nums  # 这里代表计算机没有偷懒成功 o(╥﹏╥)o
    

    相关文章

      网友评论

          本文标题:python排序算法之一:冒泡排序(及其优化)

          本文链接:https://www.haomeiwen.com/subject/aipjgctx.html