python选择排序

参考:www.bilibili.com/video/BV1E4… 选择排序和冒泡排序挺像,不过发生交换的次数大大减小,时间上应该比冒泡排序短很多

实现

import datetime
import random
from functools import wraps

# [5,4,3,2,1]
tempList = [random.randint(0, 100000) for x in range(50000)]


def logger(function):
    @wraps(function)
    def wrapper(*args, **kwargs):
        start = datetime.datetime.now().timestamp()
        result = function(*args, **kwargs)
        end = datetime.datetime.now().timestamp()
        print(f"总共花了{int(end - start)}s")
        return result

    return wrapper


@logger
def insertSort(l: list):
    # 次数
    for i in range(len(l) - 1):
        # 假设是最小值
        minValue = l[i]
        minIndex = i
        for j in range(i + 1, len(l)):
            if minValue > l[j]:
                minValue = l[j]
                minIndex = j

        # 说明需要交换
        if minIndex != i:
            # 注意顺序
            l[minIndex] = l[i]
            l[i] = minValue

    return l


insertSort(tempList)

image.png