zoukankan      html  css  js  c++  java
  • 插入排序

     插入排序是基于比较的排序。所谓的基于比较,就是通过比较数组中的元素,看谁大谁小,根据结果来调整元素的位置。

    因此,对于这类排序,就有两种基本的操作:①比较操作; ②交换操作

    插入排序算法有种递归的思想在里面,它由N-1趟排序组成。初始时,只考虑数组下标0处的元素,只有一个元素,显然是有序的。

    然后第一趟 对下标 1 处的元素进行排序,保证数组[0,1]上的元素有序;

    第二趟 对下标 2 处的元素进行排序,保证数组[0,2]上的元素有序;

    .....

    .....

    第N-1趟对下标 N-1 处的元素进行排序,保证数组[0,N-1]上的元素有序,也就是整个数组有序了。

    它的递归思想就体现在:当对位置 i 处的元素进行排序时,[0,i-1]上的元素一定是已经有序的了。

    整个过程就像抓牌一样,不断将新抓的牌放到已抓牌中相应的位置

    import random
    import time
    
    
    def mytime(func):
        def inner(*args, **kwargs):
            t1 = time.time()
            func(*args, **kwargs)
            t2 = time.time()
            print('time costed is {}.'.format(t2 - t1))
    
        return inner
    
    
    @mytime
    def insert_sort(li):
        print(li)
        for i in range(len(li)):
            tmp = i + 1   # 新抓一张牌
            if tmp < len(li):  # 最后一次就没有下一张牌了
                # 依次循环已经抓到的牌,只要比新抓的牌小,就交换两牌的位置,直到所有牌都比完
                while tmp >= 1 and li[tmp] < li[tmp-1]:  
                    li[tmp-1], li[tmp]=li[tmp], li[tmp-1]
                    tmp -= 1
        print(li)
    
    
    l = list(range(1000))
    random.shuffle(l)
    insert_sort(l)
    

      

      

  • 相关阅读:
    可视化数据库管理工具DataGrip使用详解
    MySQL常用函数
    你必须掌握的 21 个 JAVA 核心技术!
    idea中那些好用到飞起的插件
    Object使用
    单页面应用和多页面应用的区别及优缺点
    正则常用匹配
    npm --save-dev 和 --save 的区别
    js常用小技巧
    js复制文字到剪切板
  • 原文地址:https://www.cnblogs.com/wumingxiaoyao/p/8423096.html
Copyright © 2011-2022 走看看