十大排序算法之->插入排序

一、插入排序

插入排序的基本思想是将一个记录插入到已经排好序的有序表中,从而形成一个新的、记录数增1的有序表。

排序过程:

1、外层循环:从第二个元素开始,依次选取未排序的元素。

2、内层循环:将当前选取的元素与已排序序列中的元素从后往前进行比较,找到合适的插入位置,并将比它大的元素向后移动一位,为新元素的插入腾出空间。

3、插入操作:将当前元素插入到找到的位置上,完成一次插入操作。

插入排序的时间复杂度在最好情况下是O(N),在平均和最坏情况下是O(N^2),其中N是列表的长度


# -*- coding: utf-8 -*-
"""
======================================File Name  :insertion_sort.pyAuthor     :lanmingyongdate       :2024/4/19 17:04Description:
插入排序的基本思想是将一个记录插入到已经排好序的有序表中,从而形成一个新的、记录数增1的有序表。它通过双层循环来实现排序过程:外层循环:从第二个元素开始,依次选取未排序的元素。
内层循环:将当前选取的元素与已排序序列中的元素从后往前进行比较,找到合适的插入位置,并将比它大的元素向后移动一位,为新元素的插入腾出空间。
插入操作:将当前元素插入到找到的位置上,完成一次插入操作。
插入排序的时间复杂度在最好情况下是O(N),在平均和最坏情况下是O(N^2),其中N是列表的长度
======================================= 
"""def insertion(arr):for i in range(1, len(arr)):index = ifor j in list(range(i))[::-1]:if arr[index] < arr[j]:arr[index], arr[j] = arr[j], arr[index]index = jif arr[index] > arr[j]:breakprint(arr)arr = [9, 6, 7, 2, 8, 1, 0, 4]
insertion(arr)
#执行输出
"""
[6, 9, 7, 2, 8, 1, 0, 4]
[6, 7, 9, 2, 8, 1, 0, 4]
[6, 7, 2, 9, 8, 1, 0, 4]
[6, 2, 7, 9, 8, 1, 0, 4]
[2, 6, 7, 9, 8, 1, 0, 4]
[2, 6, 7, 8, 9, 1, 0, 4]
[2, 6, 7, 8, 1, 9, 0, 4]
[2, 6, 7, 1, 8, 9, 0, 4]
[2, 6, 1, 7, 8, 9, 0, 4]
[2, 1, 6, 7, 8, 9, 0, 4]
[1, 2, 6, 7, 8, 9, 0, 4]
[1, 2, 6, 7, 8, 0, 9, 4]
[1, 2, 6, 7, 0, 8, 9, 4]
[1, 2, 6, 0, 7, 8, 9, 4]
[1, 2, 0, 6, 7, 8, 9, 4]
[1, 0, 2, 6, 7, 8, 9, 4]
[0, 1, 2, 6, 7, 8, 9, 4]
[0, 1, 2, 6, 7, 8, 4, 9]
[0, 1, 2, 6, 7, 4, 8, 9]
[0, 1, 2, 6, 4, 7, 8, 9]
[0, 1, 2, 4, 6, 7, 8, 9]
"""

二、动画演示

 欢迎大家关注我的订阅号,会定期分享一些关于测试相关的文章,有问题也欢迎一起讨论学习!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/5823.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库(MySQL)基础:函数

函数&#xff1a;是指一段可以直接被另一段程序调用的程序或代码。 1.字符串函数 MySQL中内置了很多字符串函数&#xff0c;常用的几个如下&#xff1a; 函数功能concat(S1,S2,...Sn)字符串拼接&#xff0c;将S1,S2,...Sn拼接成一个字符串lower(str)将字符串str全部转为小写…

C++成员初始化列表

我们在类的构造函数中使用成员初始化列表可以带来效率上的提升&#xff0c;那么成员初始化列表在编译后会发生什么就是这篇文章要探究的问题 文章目录 引入成员初始化列表用成员初始化列表优化上面的代码成员初始化列表展开成员初始化列表的潜在危险 参考资料 引入 考虑下面这…

IGM焊接机器人RTE 495伺服电机维修详情一览

在当今科技迅速发展的时代&#xff0c;机器人已成为各行各业不可或缺的重要工具。IGM机器人便是其中之一&#xff0c;其工业机械手伺服马达作为机器人的关键部件&#xff0c;确保机器人能够高效、稳定地运行。当出现IGM焊接机器人RTE 495伺服电机故障问题时&#xff0c;及时进行…

Kafka介绍、安装以及操作

Kafka消息中间件 1.Kafka介绍 1.1 What is Kafka&#xff1f; 官网&#xff1a; https://kafka.apache.org/超过 80% 的财富 100 强公司信任并使用 Kafka &#xff1b;Apache Kafka 是一个开源分布式事件流平台&#xff0c;被数千家公司用于高性能数据管道、流分析、数据集成…

【校招】校园招聘中的签约环节,面完HR后的流程(意向书,offer选择与三方协议)

【校招】校园招聘中的签约环节&#xff0c;面完HR后的流程&#xff08;意向书&#xff0c;offer选择与三方协议&#xff09; 文章目录 一、面完HR后的流程1、口头oc、谈薪&#xff08;两个电话&#xff09;2、邮件意向书、带薪offer&#xff08;两封邮件&#xff09;3、签三方&…

Spring Clound介绍

Spring Cloud 是一系列框架的集合&#xff0c;它利用 Spring Boot 的开发便利性简化了分布式系统&#xff08;例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话和集群状态&#xff09;的开发。Spring Cloud 旨在为开发者…

JavaScript调用对象内部属性和方法的语法

在JavaScript中&#xff0c;我们可以通过以下几种方式来调用对象内部的属性和方法&#xff1a; 使用点符号&#xff08;.&#xff09;来访问对象的属性和方法。例如&#xff1a; var obj {name: John,age: 30,sayHello: function() {console.log(Hello!);} };console.log(ob…

axios.get请求 重复键问题??

封装的接口方法&#xff1a; 数据&#xff1a; 多选框多选后 能得到对应的数组 但是请求的载荷却是这样的,导致会请求不到数据 departmentChecks 的格式看起来是一个数组&#xff0c;但是通常 HTTP 请求的查询参数不支持使用相同的键&#xff08;key&#xff09;名多次。如…

【WEEK9】Learning Objectives and Summaries【Spring Boot】【English Version】

Learning Objectives: Learning SpringBoot Learning Content: Reference video tutorials【狂神说Java】SpringBoot最新教程IDEA版通俗易懂YAML configuration injectionJSR303 data validationMulti-environment switchingAuto Configuration PrincipleWeb development to …

Ubuntu 4G模块域名ping不通

Ubuntu 4G模块域名ping不通 1. 问题2. 解决办法 1. 问题 Ubuntu 用4G模块上网&#xff0c;ping ip可以&#xff0c;但是 域名 ping 不通 查了网络和DNS解析配置都没问题 2. 解决办法 关闭调制解调管理器 stop systemctl stop ModemManager stop systemctl disable ModemMana…

职场商务口才培训沙龙(3篇)

职场商务口才培训沙龙&#xff08;3篇&#xff09; 职场商务口才培训沙龙是一个为职场人士提供交流、学习和提升商务口才能力的平台。以下是关于职场商务口才培训沙龙的三篇内容概述&#xff1a; **篇&#xff1a;基础沟通与表达技巧沙龙 主题&#xff1a;构建有效的商务沟通…

汇编语言-adc、sbb以及cmp指令

adc指令&#xff1a; adc 是带进位加法指令&#xff0c;它利用了CF位上记录的进位值 指令格式&#xff1a; adc 操作对象1,操作对象2 功能&#xff1a; 操作对象1 操作对象1 操作对象2 CF 例如指令 adc ax,bx 实现的功能是: (ax)(ax)(bx)CF 例如&#xff1a; mov ax,2 …

带宽的理解-笔记

带宽的理解 带宽(频带宽度)&#xff1a;是指电磁波最高频率和最低频率的差值&#xff0c;这一段频率被称为带宽。 举例说明 人耳能听到的频率范围是20赫兹到2万赫兹。换句话说&#xff0c;人而只对20赫兹至2万赫兹的声音频率有反应&#xff0c;超出或低于这一频率范围的声音我…

B+树详解与实现

B树详解与实现 一、引言二、B树的定义三、B树的插入四、B树的删除五、B树的查找效率六、B树与B树的区别和联系 一、引言 B树是一种树数据结构&#xff0c;通常用于数据库和操作系统的文件系统中。它的特点是能够保持数据稳定有序&#xff0c;其插入与修改拥有较稳定的对数时间…

ngrinder项目-本地调试遇到的坑

前提-maven mirrors配置 <mirrors><!--阿里公有仓库--><mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</ur…

借助Aspose.SVG图像控件,在线将 PNG 转换为 XML

Aspose.SVG for .NET 是用于SVG文件处理的灵活库&#xff0c;并且与其规范完全兼容。API可以轻松加载&#xff0c;保存和转换SVG文件&#xff0c;以及通过其文档对象模型&#xff08;DOM&#xff09;读取和遍历文件的元素。API独立于任何其他软件&#xff0c;使开发人员无需使用…

分布式与一致性协议之Raft算法(一)

Raft算法 概述 Raft算法属于Multi-Paxos算法&#xff0c;它在兰伯特Multi-Paxos思想的基础上做了一些简化和限制&#xff0c;比如日志必须是连续的&#xff0c;只支持领导者(Leader)、跟随者(Follwer)和候选人(Candidate)3种状态。在理解和算法实现上&#xff0c;Raft算法相对…

基于Springboot的大学生社团活动平台

基于SpringbootVue的大学生社团活动平台设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 首页 社团信息 社团活动 社团论坛 社团资讯 后台登录 后台首页 学生管理 社…

医疗大模型华佗GPT-2:医学问答超越GPT-4,通过2023年国家执业药师考试

前言 随着人工智能技术的快速发展&#xff0c;特别是在自然语言处理(NLP)领域&#xff0c;大型预训练模型如GPT系列已经显示出在多个领域的强大应用潜力。最近&#xff0c;华佗GPT-2医疗大模型的发布&#xff0c;不仅标志着人工智能在医学领域的一大进步&#xff0c;更是在202…

Mybatis逆向工程的2种方法,一键高效快速生成Pojo、Mapper、XML,摆脱大量重复开发

一、写在开头 最近一直在更新《Java成长计划》这个专栏&#xff0c;主要是Java全流程学习的一个记录&#xff0c;目前已经更新到Java并发多线程部分&#xff0c;后续会继续更新&#xff1b;而今天准备开设一个全新的专栏 《EfficientFarm》。 EfficientFarm&#xff1a;高效农…