python---冒泡排序的实现

冒泡排序

思想

​ 列表中有n个数, 每两个相邻的数, 如果前边的数比后边的数大, 就交换.

关键点:

: 总共执行 n-1趟

无序区: 第 i 趟时, 索引 0~ n-1-i 为无序区

优化:

​ 如果执行一趟没有交换, 则列表已是有序, 可以直接结束.

import random
from cal_time import get_running_time


@get_running_time
def bubble_sort(li):
    
    n = len(li)

    for i in range(n - 1):  # 执行n-1趟

        # 记录执行一趟中是否有交换
        exchange = 0

        for j in range(n - 1 - i):  # 第i趟中的无序区为 0~n-1-i
            if li[j] > li[j + 1]:
                li[j], li[j + 1] = li[j + 1], li[j]
                exchange = 1

        if not exchange:
            return li

    return li


li = [i for i in range(0, 1000, 4)]
random.shuffle(li)
print(li)
print(bubble_sort(li))
作者:凯旋.Lau
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/KX-Lau/p/12504139.html