zoukankan      html  css  js  c++  java
  • python_冒泡算法

    什么是冒泡算法?

      -- 像鱼吐泡泡一样,每次都是向上冒出一个水泡

    如何逻辑整理?

      -- 先拿第一个值和剩下的值,一一比较,必能找到最大的或者最小的

      -- 比较过程中,第一个值小于剩下的某个值,交换位置,依次比较到最后,最大的一个肯定在最前面,找最大

      -- 比较过程中,第一个值大于剩下的某个值,交换位置,依次比较到最后,最小的一个肯定在最前面,找最小

      -- 每次找出最大的值或者最小的值,比较循环就减少一次,当只剩下一个元素时候,就结束了

      从第几个值来看,按第几个值比较,忽略列表本身的索引值

    # !/usr/bin/python3
    
    
    def buble(fish):
        '''冒泡算法'''
        for j in range(1, len(fish)):               # 从第一个开始根后面的比较
            for i in range(len(fish)-j):            # 每遍历找到最大或最小的放在第一位,然后再次循环剩下的元素
                if fish[i] > fish[i+1]:             # 如果第i个元素大i+1,互换位置,相当于找到最小的放最前面
                    # temp = fish[i+1]
                    # fish[i+1] = fish[i]
                    # fish[i] = temp
                    fish[i], fish[i+1] = fish[i+1], fish[i]     # 位置互换
        return fish
    
    if __name__ == '__main__':
        fish = [600, 4, 55, 42, 11, 5, 33, 6, 8, 20, 10, 66, 99, 77, 22]
        result = buble(fish)
        print(result)

      利用列表本身的索引值进行比较,不更好更容易理解么?

    # !/usr/bin/python3
    
    
    def buble(fish):
        '''冒泡算法'''
        for j in range(len(fish)):  # 从列表0索引开始,最后的元素就是一个,到最后一个元素,列表已经排好,无需自己比较自己
            for i in range(j + 1, len(fish)):  # j位置都是已经排好了,从j+1开始比较
                if fish[j] < fish[i]:  # 大于比较,交互位置,取最小的在前面
                    # temp = list_1[i+1]
                    # list_1[i+1] = list_1[i]
                    # list_1[i] = temp
                    fish[j], fish[i] = fish[i], fish[j]  # 交互位置,相当于以上三句话
        return fish
    
    if __name__ == '__main__':
        fish = [600, 4, 55, 42, 11, 5, 33, 6, 8, 20, 10, 66, 99, 77, 22]
        result = buble(fish)
        print(result)

      记住一句话,比最大,交互位置,取最小的值,比最小,交互位置,取最大值

      大于的时候,交互位置,实际上是把小的值,推到了列表最前面,

      小于的时候,把大的值,推到最前面,这个才是冒泡算法最让人困惑的地方

  • 相关阅读:
    L7-5 搞笑的表情包
    L7-6 神奇的验证码
    Fabric中的ACLs相关
    first-network
    关于MSP
    关于数字证书
    Linux命令学习笔记
    shell学习笔记
    区块链
    log的不同级别
  • 原文地址:https://www.cnblogs.com/2bjiujiu/p/6685850.html
Copyright © 2011-2022 走看看