• 排序算法之直接插入排序


    1.1直接插入排序原理

    在末排序序列中,构建一个子排序序列,直至全部数据排序完成
    将待排序的数,插入到已经排序的序列中合适的位置
    增加一个哨兵,放入待比较值,让它和后面已经排序好序的序列比较,找到合适的插入点
    
    在原始的列表前添加一个元素(作为哨兵,比较值)1作为有序数列开始比较;哨兵9和1比较,1小,哨兵插入,本轮结束
    0 -->1 9 8 5 6 7 4 3 2
    9 -->1 9 8 5 6 7 4 3 2
    把8放到哨兵位置,有序序列为1,9;哨兵8小于9,9右移,哨兵8大于1,哨兵8插入,本轮结束
    8-->1 9 8 5 6 7 4 3 2

    1.2代码实现

    #插入排序
    nums = [1,9,8,5,6,7,4,3,2]
    nums = [0] + nums
    _,*origin = nums
    length = len(nums)
    for i in range(2,length):
        nums[0] = nums[i]
        j = i -1
        if nums[0]<nums[j]:
            while nums[0]<nums[j]:
                nums[j+1] = nums[j]
                j -=1
            nums[j+1] = nums[0]
    _,*new_nums = nums
    print(new_nums)

    1.3总结

    最好情况,正好是升序排列,比较迭代n-1
    最差情况,正好是降序排列,比较迭代1,2,3,4,5,n-1即n(n-1)/2
    使用2层嵌套循环,时间复杂度0(n**2)
    稳定排序算法
    使用在小规模数据比较
    

      

    本文为原创文章,转载请标明出处
  • 相关阅读:
    python3安装crypto出错,及解决方法
    php中的引用
    算法
    HTTP协议
    jdk 1.8 InvocationHandler 中文注释
    Java实现多线程的几种方法
    shell编写显示ps相关脚本
    逆波兰表达式求值(后序表达式)
    155. 最小栈(leetcode简单题)
    字符串逆序
  • 原文地址:https://www.cnblogs.com/harden13/p/8798657.html
Copyright © 2020-2023  润新知