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

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

     

    经典排序算法 - 冒泡排序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

    代码仅供参考

    def sor(a):
         for i in range(len(a))[::-1]:
                 for j in range(i):
                         if a[j]>a[j+1]:
                                 a[j],a[j+1]=a[j+1],a[j]
                                 print a
         return a
    ...
    >>> a=[6,2,4,1,5,9]
    >>> sor(a)
    [2, 6, 4, 1, 5, 9]
    [2, 4, 6, 1, 5, 9]
    [2, 4, 1, 6, 5, 9]
    [2, 4, 1, 5, 6, 9]
    [2, 1, 4, 5, 6, 9]
    [1, 2, 4, 5, 6, 9]
    [1, 2, 4, 5, 6, 9]
    

      

     
  • 相关阅读:
    二维坐标离散化
    unique()函数使用
    如果你的unordered_map头文件报错请看这里
    string删除与查找erase,find
    2017 ACM-ICPC, Universidad Nacional de Colombia Programming Contest K
    2017-2018 ACM-ICPC Pacific Northwest Regional Contest (Div. 2) P-Fear Factoring 区间内数的所有因数的和(除法分块)
    .NETCore使用EntityFrameworkCore连接数据库生成实体
    sql server 触发器开发
    Windows 配置定时任务 和任务无法执行原因分析
    sql 的存储过程和事务
  • 原文地址:https://www.cnblogs.com/2014-02-17/p/7062397.html
Copyright © 2011-2022 走看看