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))
posted @ 2020-03-16 15:25  凯旋.Lau  阅读(159)  评论(0编辑  收藏  举报