插入排序(Insertion-Sort)-- 初级排序算法

2023-11-08

1 插入排序(Insertion-Sort)

插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

算法描述
一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:

  • 从第一个元素开始,该元素可以认为已经被排序;
  • 取出下一个元素,在已经排序的元素序列中从后向前扫描;
  • 如果该元素(已排序)大于新元素,将该元素移到下一位置;
  • 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
  • 将新元素插入到该位置后;
  • 重复步骤2~5。

动图演示
在这里插入图片描述
代码实现

class Solution:
    def sortArray(self, nums: List[int]) -> List[int]:
        n = len(nums)
        if not nums or n==0: return []
        for i in range(1,n):
            preIndex = i-1
            current = nums[i]
            while preIndex >= 0 and nums[preIndex] > current:
                nums[preIndex + 1] = nums[preIndex]
                preIndex = preIndex - 1
            nums[preIndex + 1] = current
        return nums

算法特性

  • 时间复杂度(最好): O ( n ) O(n) O(n)
  • 时间复杂度(最坏): O ( n 2 ) O(n^2) O(n2)
  • 时间复杂度(平均): O ( n 2 ) O(n^2) O(n2)
  • 空间复杂度: O ( 1 ) O(1) O(1)
  • 稳定性:稳定

参考资料

十大经典排序算法(动图演示)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

插入排序(Insertion-Sort)-- 初级排序算法 的相关文章

随机推荐

  • VMware中快照如何使用

    目录 自说 快照与备份的区别 使用 自说 所谓快照 简单点来讲就如同相机中的一张照片 这张照片只要存在就可以回到拍照之前的状态场景 系统快照就是把系统中的当前状态记录在一个文件中 这个文件通常在你保存虚拟机的工作空间中 当我们在使用系统是误
  • 贝叶斯网的R实现( Bayesian networks in R)bnlearn(3)

    4 参数学习 得到贝叶斯网的网络结构之后 可以对局部分布的参数进行参数估计了 这称作参数学习 4 1参数学习的基本方法 bnlearn包的参数学习函数是bn fit 其参数method给出了两种具体的方法 mle 为极大似然估计 bayes
  • 2023最新版Android studio安装入门教程(非常详细)从零基础入门到精通,看完这一篇就够了。

    目录 JDK安装与配置 一 下载JDK 二 JDK安装 三 JDK的环境配置 四 JDK的配置验证 Android studio安装 Android studio连接手机真机调试 以华为鸿蒙为例 一 新建一个android项目 二 进入项目
  • 如何将自建的matlab神经网络的激活函数使用gensim生成simulink模型

    要把自定义的matlab激活函数生成到simulink模型中 必须在simulink神经网络库的激活函数子库中添加相应的激活函数 如何打开simulink的神经网络库 这里有两种方法 一种是在命令窗口中输出 neural 就会弹出以下窗口
  • 玩转C++小项目之短链接Demo

    玩转C 小项目之短链接Demo 真实的短链接相对来说比较复杂 例如 hash算法 放号系统等等 今天只是从小项目角度模拟一个短链接实现 如何通过短短的几十行代码快速实现一个 其中涉及的几个关键点 如何将长链接缩短 如何存储映射关系 映射关系
  • 【实际开发17】- 静态测试

    静态测试技术 不运行被测试程序 对代码通过检查 阅读进行分析 目录 1 静态测试 1 静态测试三步曲 走查 审查 评审 2 编码的标准和规范 3 代码评审 1 代码走查 Walk Through 2 正式会议审查 Inspection 3
  • MySQL 主从复制(实时热备)原理与配置

    MySQL是现在普遍使用的数据库 但是如果宕机了必然会造成数据丢失 为了保证MySQL数据库的可靠性 就要会一些提高可靠性的技术 MySQL主从复制可以做到实时热备数据 本文介绍MySQL主从复制原理及其配置过程 术语 主从复制 maste
  • Android中文API最新中文版

    http www eoeandroid com thread 58597 1 1 html 转载于 https www cnblogs com lost in code archive 2013 03 13 2956940 html
  • import “cv2“ could not be resolved pylance(reportMissingImports)

    openCV系列文章目录 文章目录 openCV系列文章目录 前言 一 错误原因 二 解决方法 1 在vscode Python Select Interpreter 2 依然报错 cv2 error OpenCV 4 7 0 D a op
  • Vagrant Note

    Vagrant Note 1 vagrant 命令 vagrant init hashicorp precise64 需要先删除Vagrantfile文件 vagrant up 启动虚拟机 根据Vagrantfile文件启动 vagrant
  • 【Linux命令详解

    文章标题 简介 一 参数列表 二 使用介绍 1 基本用法 2 显示所有进程 3 显示进程详细信息 4 根据CPU使用率排序 5 查找特定进程 6 显示特定用户的进程 7 显示进程内存占用 8 查看进程树 9 实时监控进程 10 查看特定进程
  • 一行代码实现安慰剂检验

    1 什么是安慰剂检验 随着 因果推断方法 在实证研究中的使用比例不断提升 越来越多的文章也会进行安慰剂检验 其检验基本原理与医学中的安慰剂类似 即使用 假的政策发生时间或实验组 进行分析 以检验能否得到政策效应 如果依然得到了政策效应 则表
  • echarts tooltip显示其他字段

    这是上面的数据 let data nodes 公司名称 name 浏览器有限公司 category 0 0代表公司 1代表自然人股东 value 100 capi 持股数1200 股东列表 name 操作系统集团 category 0 va
  • -----关于Onvif链接成功但运行报错/usr/bin/ld: warning:xxx,needed by xxx,may conflict with libssl.so.1.0.0

    1 错误分析 看图 原因是openssl系统中的版本与mysql或者libevent这些库里面的openssl的版本不一致 导致链接出了问题 解决方法 重新下载与项目中mysql和libevent中openssl一样的版本 即 由于我项目中
  • Python毕业设计 机器学习新闻算法研究与实现

    文章目录 0 前言 简介 本文章博主将介绍 参与及比较算法 先说结论 实现过程 数据爬取 数据预处理 CNN文本分类 其他分类方法更新中 最后 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达
  • C/C++实现协程及原理(详细完整版)-架构师篇

    一 协程 Coroutine 简介 协程 又称微线程 纤程 英文名Coroutine 协程的概念很早就提出来了 但直到最近几年才在某些语言 如Lua 中得到广泛应用 子程序 或者称为函数 在所有语言中都是层级调用 比如A调用B B在执行过程
  • drools 7.x 加载指定的决策表

    git https github com lccbiluox2 drools test git 1 决策表 位置 Users lcc IdeaProjects drools test src main resources com drool
  • Python异步请求:处理并发任务的结果

    Python异步请求 处理并发任务的结果 处理并发任务的结果 在异步编程中 处理并发任务的结果可能会有所不同 以下是几种常见的处理方式 使用asyncio as completed asyncio as completed 函数返回一个迭代
  • 场景题之最快返回结果

    场景题之最快返回结果 问题描述 输入中文 最快从百度翻译 谷歌翻译 有道翻译获取结果返回 代码实现 思路 采用CompletableFuture实现 多个CompletableFuture可以串行执行 也可以并行执行 其中anyOf 方法只
  • 插入排序(Insertion-Sort)-- 初级排序算法

    1 插入排序 Insertion Sort 插入排序 Insertion Sort 的算法描述是一种简单直观的排序算法 它的工作原理是通过构建有序序列 对于未排序数据 在已排序序列中从后向前扫描 找到相应位置并插入 算法描述 一般来说 插入