zoukankan      html  css  js  c++  java
  • 冒泡排序

    经典排序算法 - 冒泡排序Bubble sort

    原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,

    这样一趟过去后,最大或最小的数字被交换到了最后一位,

    然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子

    例子为从小到大排序,

    原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 |

    第一趟排序(外循环)

    第一次两两比较6 > 2交换(内循环)

    交换前状态| 6 | 2 | 4 | 1 | 5 | 9 |

    交换后状态| 2 | 6 | 4 | 1 | 5 | 9 |

    第二次两两比较,6 > 4交换

    交换前状态| 2 | 6 | 4 | 1 | 5 | 9 |

    交换后状态| 2 | 4 | 6 | 1 | 5 | 9 |

    第三次两两比较,6 > 1交换

    交换前状态| 2 | 4 | 6 | 1 | 5 | 9 |

    交换后状态| 2 | 4 | 1 | 6 | 5 | 9 |

    第四次两两比较,6 > 5交换

    交换前状态| 2 | 4 | 1 | 6 | 5 | 9 |

    交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

    第五次两两比较,6 < 9不交换

    交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |

    交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

    第二趟排序(外循环)

    第一次两两比较2 < 4不交换

    交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |

    交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

    第二次两两比较,4 > 1交换

    交换前状态| 2 | 4 | 1 | 5 | 6 | 9 | 
    交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

    第三次两两比较,4 < 5不交换

    交换前状态| 2 | 1 | 4 | 5 | 6 | 9 | 
    交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

    第四次两两比较,5 < 6不交换

    交换前状态| 2 | 1 | 4 | 5 | 6 | 9 |

    交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

    第三趟排序(外循环)

    第一次两两比较2 > 1交换

    交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

    交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

    第二次两两比较,2 < 4不交换

    交换后状态| 1 | 2 | 4 | 5 | 6 | 9 | 
    交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

    第三次两两比较,4 < 5不交换

    交换后状态| 1 | 2 | 4 | 5 | 6 | 9 | 
    交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

    第四趟排序(外循环)无交换

    第五趟排序(外循环)无交换

     

    排序完毕,输出最终结果1 2 4 5 6 9

    代码仅供参考

    a = [1,5,2,8,4,3,9]

    # 从小到大排序 每一轮找出一个最大值

    l = len(a)-1
    for i in range(l):
      for j in range(l-i):
        if a[j+1] < a[j]:
          temp = a[j+1]
          a[j+1] = a[j]
          a[j] = temp
        else:
          pass
      j += 1
    i += 1

     

     算法2:

    import random
    a = [1,2,3,4,5,6]
    random.shuffle(a)
    print(a)
    ln = len(a)
    for j in range(ln):
        for i in range(1, ln):
            if a[i] > a[i-1]:
                pass
            else:
                tmp = a[i]
                a[i] = a[i-1]
                a[i-1] = tmp
        print j, a

    冒泡排序动画演示

    bubble_sort_animation

  • 相关阅读:
    045_分页查询插件 bootstrap_pagination
    Kali中文乱码问题
    将一行很长的js代码格式化输出方便查看
    使用gcc编译c语言解码ascii码
    Netcat
    阿里云万网注册个人域名并配置解析主机
    使用阿里云服务器配置frp实现Windows系统RDP内网穿透
    mysql数据库行级锁的使用(二)
    关于mysql数据库行级锁的使用(一)
    关于volatile的可见性问题
  • 原文地址:https://www.cnblogs.com/zknublx/p/5878346.html
Copyright © 2011-2022 走看看