• python---插入排序的实现


    插入排序

    思想

    ​ 列表被分为有序区和无序区两个部分, 最初有序区只有一个元素, 每次从无序区选择一个元素, 插入到有序区的位置, 直到无序区变空

    import random
    from cal_time import get_running_time
    
    
    @get_running_time
    def insert_sort(li):
        n = len(li)
    
        for i in range(1, n):  # 执行n-1趟, i为要插入元素的下标
    
            tmp = li[i]  # 要插入的值
            j = i - 1
    
            # j=-1停止后挪, li[j]比插入值小停止后挪
            while j >= 0 and li[j] > tmp:  # 往后挪就循环, 2个条件都满足
                li[j + 1] = li[j]
                j -= 1
    
            # 循环结束时, j要么是-1, 要么是比插入值小的值
            li[j + 1] = tmp
    
        return li
    
    
    @get_running_time
    def insert_sort2(li):
        n = len(li)
    
        for i in range(1, n):       # 执行n-1趟
            tmp = li[i]
            for j in range(i - 1, -1, -1):
    
                if li[j] > tmp:     # li[j]比插入值大 后挪
                    li[j + 1] = li[j]
                else:               # li[j]比插入值小 停止后挪
                    li[j + 1] = tmp
                    break
    
            # 循环结束时, 如果 j= 0,
            if li[0] > tmp:
                li[0] = tmp
    
        return li
    
    
    li = [i for i in range(0, 10000, 4)]
    random.shuffle(li)
    print(li)
    print(insert_sort(li))
    print(insert_sort2(li))
    
    作者:凯旋.Lau
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    字符串-01. 在字符串中查找指定字符(15)
    数组-14. 数字加密(15)
    软考笔记第一天之数制
    基于c#开发的简易点名器
    软考笔记之存储管理
    IO inputStream和outputStream
    java可变参数
    Map集合总结
    Collection集合总结
    Struts 获得前台传参几种方式
  • 原文地址:https://www.cnblogs.com/KX-Lau/p/12509694.html
Copyright © 2020-2023  润新知