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

一、插入排序

插入排序的基本思想是将一个记录插入到已经排好序的有序表中,从而形成一个新的、记录数增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,一经查实,立即删除!

相关文章

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、签三方&…

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

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

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

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

带宽的理解-笔记

带宽的理解 带宽(频带宽度)&#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;高效农…

eaapp账号注销怎么操作 简单几步完成ea账号注销

eaapp账号注销怎么操作 简单几步完成ea账号注销 有许多玩家在注册ea平台账户的时候&#xff0c;会出现账号输错&#xff0c;地区选择错误等问题&#xff0c;导致自己没有注册成功心仪的账号&#xff0c;想要将账号注销却又不知道该如何操作&#xff0c;今天小编就为大家带来详…

mac idea 下载spring 源码遇到的问题

一、Kotlin: warnings found and -Werror specified 这个问题网上看了很多文章多说是缺少cglib、objenesis包。然后执行了 实际还是没有什么用 解决&#xff1a; 最后自己看了一下前面一个警告。说的就是版本太低。所以我觉得是这个前置问题导致的 然后搜索了改这个Kotlin版本…

springboot项目组合定时器schedule注解实现定时任务

springboot项目组合定时器schedule注解实现定时任务&#xff01; 创建好springboot项目后&#xff0c;需要在启动类上增加注解开启定时器任务 下图所示&#xff1a; 增加这个注解&#xff0c;启动项目&#xff0c; package com.example.scheduledemo.util;import org.springf…

C++-5

完成特殊成员函数 #include <iostream>using namespace std;class Person {string name;int *age; public://构造&#xff0c;析构&#xff0c;拷贝构造&#xff0c;拷贝赋值Person():age(new int ){}Person(int *age,string name):name(name),age(new int (*(age))){}~…

unity制作app(2)--主界面

1.先跳转过来&#xff0c;做一个空壳&#xff01;新增场景main为4号场景&#xff01; 2.登录成功跳转到四号场景&#xff01; 2.在main场景中新建canvas&#xff0c;不同的状态计划用不同的panel来设计&#xff01; 增加canvas和底图image 3.突然输不出来中文了&#xff0c;浪…

【C语言加油站】字符函数与字符串函数

字符函数与字符串函数 导言一、字符分类函数1.1 字符分类函数的用法 二、字符转换函数2.1 字符转换函数的用法 三、字符串函数3.1 成员3.2 strlen函数3.2.1 size_t类型3.2.2 strlen的易错点3.2.2 strlen的使用3.2.3 strlen与sizeof 3.3 strcpy函数和strncpy函数3.3.1 strcpy和s…