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

  • 相关阅读:
    arcgis api 3.x for js 入门开发系列八聚合效果(附源码下载)
    arcgis api 3.x for js 入门开发系列七图层控制(附源码下载)
    arcgis api 3.x for js 入门开发系列六地图分屏对比(附源码下载)
    arcgis api 3.x for js 入门开发系列五地图态势标绘(附源码下载)
    arcgis api 3.x for js 入门开发系列四地图查询(附源码下载)
    Java里面获取当前服务器的IP地址
    Flutter at Google I/O 2018
    Modbus RTU 协议使用汇总
    plsql 创建表空间、用户、赋予权限
    Oracle:ODP.NET Managed 小试牛刀
  • 原文地址:https://www.cnblogs.com/zknublx/p/5878346.html
Copyright © 2011-2022 走看看