八大排序算法的Python实现__3__插入排序

个人技术博客地址:http://songmingyao.com/


原理

  • 在列表左侧构建有序序列
  • 一开始将第一个元素视为有序序列
  • 对于未排序序列,则将未排序序列中的元素依次从右到左与已排序序列中的元素做比较
  • 如果未排序元素小于当时比较的已排序元素,则将该已排序元素右移
  • 如果未排序元素大于当时比较的已排序元素,则说明该元素已插入到合适位置,此轮循环结束
  • 以此类推

源码

def insert_sort(l):
    n = len(l)
    # 要排序的元素
    for i in range(1, n):
        # 已排序的元素
        for j in range(i, 0, -1):
            if l[j] < l[j-1]:
                l[j], l[j-1] = l[j-1], l[j]
            else:
                break


if __name__ == '__main__':
    l = [6, 5, 2, 8, 9, 4, 1, 0, 3, 7]
    print(l)
    insert_sort(l)
    print(l)

时间复杂度

  • 最优时间复杂度:O(n)
  • 最坏时间复杂度:O(n2)
  • 稳定性(多个元素等值的情况下是否会破坏原有顺序):稳定
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 该系列文章主要是记录下自己暑假这段时间的学习笔记,暑期也在实习,抽空学了很多,每个方面的知识我都会另起一篇博客去记...
    Yanci516阅读 14,258评论 6 19
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 10,611评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 9,125评论 0 15
  • 排序的基本概念 在计算机程序开发过程中,经常需要一组数据元素(或记录)按某个关键字进行排序,排序完成的序列可用于快...
    Jack921阅读 5,379评论 1 4
  • 如果生活像电影一样,那我的2016叫格局逆袭。 本年度最杰出成就:买了带地的大房子 ,小房子出租成投资房。 本年度...
    水在瓶4阅读 2,425评论 0 0

友情链接更多精彩内容