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

    def bubble_sort(arr):
        """冒泡排序,arr是列表"""
        # 列表长度
        n = len(arr)
        if n <= 1:
            return
        for i in range(n):
            # 提前退出标志位
            flag = False
            for j in range(n - i - 1):
                if arr[j] > arr[j + 1]:
                    arr[j], arr[j + 1] = arr[j + 1], arr[j]  # 交换
                    flag = True  # 此次冒泡有数据交换
            if not flag:
                break
    
    
    if __name__ == "__main__":
        nums = [4, 3, 5, 6, 9, 12, 7, 1, 2, 10, 11]
    
        print("排序之前:", nums)
        bubble_sort(nums)
        print("排序之后:", nums)
    结果:
    
    排序之前: [4, 3, 5, 6, 9, 12, 7, 1, 2, 10, 11]
    排序之后: [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12]

    原理:

      冒泡排序只会操作相邻的两个数据,每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求。

      如果不满足就让他两交换。一次冒泡会让至少一个元素移动到它应该在的位置,重复n次,就完成n个数据的排序工作。

  • 相关阅读:
    hdu 3033 I love sneakers!
    poj 1742 Coins
    poj 1276 Cash Machine
    hdu 1114 Piggy-Bank
    poj 1293 Duty Free Shop
    hdu 1203 I NEED A OFFER!
    hdu 2546 饭卡
    树的直径
    CF 337D Book of Evil
    ST表
  • 原文地址:https://www.cnblogs.com/wutongluo/p/13155513.html
Copyright © 2011-2022 走看看