• [经典算法]冒泡排序 BubbleSort


    类似于水中冒泡,较大的快一点冒起来,较小的慢慢冒起来。假设从小到大排序,即较大的数慢慢往后排,较小的数慢慢往前排。每一趟遍历,将一个最大的数移到序列末尾。

    基本方法:

    1、比较数组中两个相邻的元素,如果第一个数比第二个大,则交换位置

    2、每一次比较,都会产生一个最大或者最小的数,移到数组后面

    3、下一轮则可以少一次排序,依次循环,直到结束

    def BubbleSort(ls):
        for i in range(len(ls)-1): # 从第2个数对比排序,需要len(ls)-1趟排序
            for j in range(len(ls)-1-i): # 每一趟排序确定一个数,每一趟需要两两比较的次数为len(ls)-1-i
                if ls[j+1] < ls[j]: # 暂存,然后交换位置
                    temp = ls[j+1]
                    ls[j+1]  = ls[j]
                    ls[j] = temp
                print('第',i+1,'趟 第',j+1,'次的排序结果为:',ls)
        return ls
    
            
    a = [9,5,6,8,2,7,3,4,1]
    print('冒泡排序结果为:',BubbleSort(a))
    
    ====================== RESTART: test.py ======================
    第 1 趟 第 1 次的排序结果为: [5, 9, 6, 8, 2, 7, 3, 4, 1]
    第 1 趟 第 2 次的排序结果为: [5, 6, 9, 8, 2, 7, 3, 4, 1]
    第 1 趟 第 3 次的排序结果为: [5, 6, 8, 9, 2, 7, 3, 4, 1]
    第 1 趟 第 4 次的排序结果为: [5, 6, 8, 2, 9, 7, 3, 4, 1]
    第 1 趟 第 5 次的排序结果为: [5, 6, 8, 2, 7, 9, 3, 4, 1]
    第 1 趟 第 6 次的排序结果为: [5, 6, 8, 2, 7, 3, 9, 4, 1]
    第 1 趟 第 7 次的排序结果为: [5, 6, 8, 2, 7, 3, 4, 9, 1]
    第 1 趟 第 8 次的排序结果为: [5, 6, 8, 2, 7, 3, 4, 1, 9]
    第 2 趟 第 1 次的排序结果为: [5, 6, 8, 2, 7, 3, 4, 1, 9]
    第 2 趟 第 2 次的排序结果为: [5, 6, 8, 2, 7, 3, 4, 1, 9]
    第 2 趟 第 3 次的排序结果为: [5, 6, 2, 8, 7, 3, 4, 1, 9]
    第 2 趟 第 4 次的排序结果为: [5, 6, 2, 7, 8, 3, 4, 1, 9]
    第 2 趟 第 5 次的排序结果为: [5, 6, 2, 7, 3, 8, 4, 1, 9]
    第 2 趟 第 6 次的排序结果为: [5, 6, 2, 7, 3, 4, 8, 1, 9]
    第 2 趟 第 7 次的排序结果为: [5, 6, 2, 7, 3, 4, 1, 8, 9]
    第 3 趟 第 1 次的排序结果为: [5, 6, 2, 7, 3, 4, 1, 8, 9]
    第 3 趟 第 2 次的排序结果为: [5, 2, 6, 7, 3, 4, 1, 8, 9]
    第 3 趟 第 3 次的排序结果为: [5, 2, 6, 7, 3, 4, 1, 8, 9]
    第 3 趟 第 4 次的排序结果为: [5, 2, 6, 3, 7, 4, 1, 8, 9]
    第 3 趟 第 5 次的排序结果为: [5, 2, 6, 3, 4, 7, 1, 8, 9]
    第 3 趟 第 6 次的排序结果为: [5, 2, 6, 3, 4, 1, 7, 8, 9]
    第 4 趟 第 1 次的排序结果为: [2, 5, 6, 3, 4, 1, 7, 8, 9]
    第 4 趟 第 2 次的排序结果为: [2, 5, 6, 3, 4, 1, 7, 8, 9]
    第 4 趟 第 3 次的排序结果为: [2, 5, 3, 6, 4, 1, 7, 8, 9]
    第 4 趟 第 4 次的排序结果为: [2, 5, 3, 4, 6, 1, 7, 8, 9]
    第 4 趟 第 5 次的排序结果为: [2, 5, 3, 4, 1, 6, 7, 8, 9]
    第 5 趟 第 1 次的排序结果为: [2, 5, 3, 4, 1, 6, 7, 8, 9]
    第 5 趟 第 2 次的排序结果为: [2, 3, 5, 4, 1, 6, 7, 8, 9]
    第 5 趟 第 3 次的排序结果为: [2, 3, 4, 5, 1, 6, 7, 8, 9]
    第 5 趟 第 4 次的排序结果为: [2, 3, 4, 1, 5, 6, 7, 8, 9]
    第 6 趟 第 1 次的排序结果为: [2, 3, 4, 1, 5, 6, 7, 8, 9]
    第 6 趟 第 2 次的排序结果为: [2, 3, 4, 1, 5, 6, 7, 8, 9]
    第 6 趟 第 3 次的排序结果为: [2, 3, 1, 4, 5, 6, 7, 8, 9]
    第 7 趟 第 1 次的排序结果为: [2, 3, 1, 4, 5, 6, 7, 8, 9]
    第 7 趟 第 2 次的排序结果为: [2, 1, 3, 4, 5, 6, 7, 8, 9]
    第 8 趟 第 1 次的排序结果为: [1, 2, 3, 4, 5, 6, 7, 8, 9]
    冒泡排序结果为: [1, 2, 3, 4, 5, 6, 7, 8, 9]
    

    image

  • 相关阅读:
    【Java】通用版URLConnection 带cookie下载PDF等资源文件
    【机器学习】粗糙集(Rough Set Approach)
    【机器学习】随机森林(Random Forest)
    【Python】微博自动抢红包
    sublime text3
    【神经网络】BP反向传播神经网络
    【MLP】多层感知机网络
    【Bayesian】贝叶斯决策方法(Bayesian Decision Method)
    postman常用功能汇总(基础必备)
    apache在linux下安装
  • 原文地址:https://www.cnblogs.com/gisen_6/p/15708534.html
Copyright © 2020-2023  润新知