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

    冒泡排序

    • 通过对列表中的元素进行两两比较,数值大的交换位置,知道最后一个,依次比较,得出有序序列。
    def pao(alist):
        x = 1
        while x<=len(alist):
           
            for i in range(len(alist)-x): #当每次比较出来最大值会在最后,所以当第二次循环比较的时候,最后一次不需要循环比较,依次减去得出最大值的次数。
    
                if alist[i] > alist[i+1]:
                    alist[i],alist[i+1] = alist[i+1],alist[i]
    
            x = x+1
        return alist   
    

    冒泡思路

    #1.将乱序序列中的最大值找出,逐一移动到序列最后的位置
    alist = [3,8,5,7,6]
    def sort(alist):
        #找最大值的方式是通过对列表中的元素进行两两比较,值大的元素逐步向后移动
        #序列中有n个元素,两两比较的话,需要比较n-1次
        for i in range(len(alist)-1): #循环n-1次,控制两两比较的次数
            if alist[i] > alist[i+1]:#如果前面的元素大于后面的元素,交换两个元素的位置
                alist[i],alist[i+1] = alist[i+1],alist[i]
            else:#如果后面的元素大于前面的元素,则不作任何操作
                pass 
        return alist
    print(sort(alist))   
    
    [3, 5, 7, 6, 8]
    
    • 发现上述代码已经可以将序列中的最大值放置到合适的位置,然后我们就可以将上述操作继续作用到n-1个元素对应的新序列,则就可以将n-1个元素对应的最大值放置到了n-1个元素的最后位置。
    • 结论:发现如果将上述的操作逐步的作用n-1次就可以将整个序列变成有序的。
    #2.将步骤一的操作继续作用n-1次
    alist = [3,8,5,7,6]
    def sort(alist):
        for j in range(len(alist)-1):#外层循环次数递增,内层循环次数递减
            for i in range(len(alist)-1-j): #循环n-1次,控制两两比较的次数
                if alist[i] > alist[i+1]:#如果前面的元素大于后面的元素,交换两个元素的位置
                    alist[i],alist[i+1] = alist[i+1],alist[i]
                else:#如果后面的元素大于前面的元素,则不作任何操作
                    pass 
        return alist
    print(sort(alist))
    
  • 相关阅读:
    43. VUE 脚手架 2 版本 新建项目过程
    42 VUE 脚手架 安装 和 基本使用(创建项目)【命令】
    JDBC 原始缺点分析 和 解决
    39-8 WEBPACK —— 搭建本地服务器
    39-7 WEBPACK — js压缩的Plugin
    14. SpringBoot 更换指定的 日志框架
    39-6 打包html的plugin
    39-5 插件 — 添加版权的Plugin
    【HDU 1027】Ignatius and the Princess II
    【洛谷 1896】互不侵犯_new
  • 原文地址:https://www.cnblogs.com/zzsy/p/12684828.html
Copyright © 2011-2022 走看看