zoukankan      html  css  js  c++  java
  • [经典算法]冒泡排序 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

  • 相关阅读:
    leetcode 309. Best Time to Buy and Sell Stock with Cooldown
    leetcode 714. Best Time to Buy and Sell Stock with Transaction Fee
    leetcode 32. Longest Valid Parentheses
    leetcode 224. Basic Calculator
    leetcode 540. Single Element in a Sorted Array
    leetcode 109. Convert Sorted List to Binary Search Tree
    leetcode 3. Longest Substring Without Repeating Characters
    leetcode 84. Largest Rectangle in Histogram
    leetcode 338. Counting Bits
    git教程之回到过去,版本对比
  • 原文地址:https://www.cnblogs.com/gisen_6/p/15708534.html
Copyright © 2011-2022 走看看