Python中排序算法之插入排序

news2025/1/16 2:03:14

1 插入排序算法原理

插入排序算法与《Python中排序算法之选择排序》中提到的选择排序算法类似,也是将要排序的数列分为两个子数列(红色框数列和绿色框数列),不同之处在于插入排序算法从绿色框子数列中逐个选择数字,之后按照升序或者降序插入到红色框子数列中。而选择排序是在绿色框子数列中选择最小或最大数字,之后将该数字放到红色框子序列的尾部。

插入排序算法很像现实中玩扑克牌时,一边抓牌(绿色框子数列),一边理牌(红色框子数列)的过程,抓一张牌就把它插入到应有的位置。

2 插入排序的手动实现

假设要排序的数列中的数字是“3,8,5,9,6”。首先,从绿色框子数列中逐个选择数字,第一个数字是“3”,将其放入到红色框中,如图1所示。

图1 第一次排序

接下来,选择绿色框中子数列的数字“8”,按照升序(从小到大)将其插入到红色框中的子数列中,如图2所示。

图2 第二次排序

然后,选择绿色框中子数列的数字“5”,按照升序(从小到大)将其插入到红色框中的子数列中,如图3所示。

图3 第三次排序

按照相同的方法,依次选择绿色框中子数列的数字“5”和“6”,按照升序(从小到大)将其插入到红色框中的子数列中,如图4所示。

图4 剩余的排序

注意1 使用插入排序算法对n个数字进行排序时,需要排n-1次。

3 插入排序的代码实现

通过图5所示的代码,实现插入升序(从小到大)的排序算法。

图5 插入排序的代码实现

其中,第1行为要排序的数列;第2行的for循环表示排序的次数;第3行中的key表示从绿色框子序列中逐个取出的数;第3行j表示取出的数字要插入到红色框子序列的位置;第5-8行代码通过while循环,找到要插入的红色框子序列的位置,并把key插入到j表示的位置处,完成插入排序。程序运行的效果如图6所示。

图6 程序运行效果

相关链接1 使用插入排序算法进行降序(从大到小)的代码,只需将图5第5行中的“>”改为“<”即可。

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

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

相关文章

读软件开发安全之道:概念、设计与实施12不受信任的输入

1. 不受信任的输入 1.1. 不受信任的输入可能是编写安全代码的开发人员最关心的问题 1.1.1. 最好将其理解为输入系统中的所有不受信任的输入 1.1.2. 来自受信任的代码的输入可以提供格式正确的数据 1.2. 不受信任的输入是指那些不受你控制&#xff0c;并且可能被篡改的数据&…

美发店会员系统设计解读之规格选择-SAAS本地化及未来之窗行业应用跨平台架构

一、请求产品信息 $.ajax({type:"get", //请求方式async:true, //是否异步url:"服务器",dataType:"json", //跨域json请求一定是jsonpjsonp: "cwpd_showData_dy_spec", //跨域请求的参数名&#xff0c;默认是callback//js…

创新互动体验RAG:利用角色化AI技术增强影视评论的沉浸感

创新互动体验RAG:利用角色化AI技术增强影视评论的沉浸感 目前已经搭建了一整套完整的角色对话链路,可以快速应用于各个角色扮演场景中。剧集中的评论场景是一个很好的角色扮演场景,期望能在优酷剧集的评论中,模拟角色性格,回复用户相关的评论并引导用户进一步互动,为优酷…

智能儿童对讲机语音交互,乐鑫ESP-RTC音视频通信,ESP32无线语音方案

儿童对讲机一种专为孩子们设计的通讯设备&#xff0c;可以让父母与孩子之间进行双向通讯&#xff0c;增强亲子关系&#xff0c;增强孩子的可玩性。 儿童对讲机近几年发展的比较快&#xff0c;通过无线WiFi及蓝牙通信技术&#xff0c;可以实现远程控制和语音交互功能&#xff0…

基于vue框架的便利店收银管理系统im2gw(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 开题报告内容 基于Vue框架的便利店收银管理系统开题报告 一、引言 随着零售业的快速发展&#xff0c;便利店作为日常生活中不可或缺的一部分&#xff0c;其运营效率和服务质量直接影响到顾客的购物体验和商家的盈利能力。便利店收银管理系统作为门店运营的…

hdfs的慢盘检测

这是我的第105篇原创文章 慢盘检测引入的背景 hdfs作为一个存储系统&#xff0c;势必会使用大量的磁盘。然而&#xff0c;在长期的使用过程中&#xff0c;磁盘也难免会磨损&#xff0c;出现损坏的磁道或扇区&#xff0c;导致磁盘读写变慢&#xff0c;IO操作耗时变长&#xff0c…

社群扫码进群完整可运营源码

源码介绍 社群扫码进群完整可运营源码&#xff0c;对接免签约支付接口&#xff0c;推广正常绑定下级。 1.安装上宝塔在配置这些环境就可以了 2.搭建环境Nginx MySQL 5.6 php7.2 3.php7.2安装扩展fileinfo redis Swoole sg11 4.服务器需要安装linux的系统 下载地址&#x…

学生宿舍管理小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;宿舍公告管理&#xff0c;学生管理&#xff0c;宿舍管理&#xff0c;后勤人员管理&#xff0c;楼栋信息管理&#xff0c;宿舍分配管理管理&#xff0c;退宿信息管理 微信端账号功能包括&#xff1a;系…

有哪些内部知识库类似钉钉,满足企业多样化需求?

在当今企业数字化转型的浪潮中&#xff0c;选择一款合适的内部知识库工具对于提升工作效率、优化内部管理具有重要意义。钉钉与HelpLook AI知识库作为两款颇受欢迎的企业级应用&#xff0c;各自在功能特性、用户体验及价格定位上展现出不同的优势。本文将从几个维度出发&#x…

OSI七层模型中的数据链路层

图片&#xff1a;数据帧的格式 这里面的一个关键点是&#xff0c;数据的源IP和目标IP在哪里&#xff1f; 就在图中的“数据”里面&#xff0c;这个“数据”也就是网络层的数据包&#xff0c;如果是TCP类型的数据包&#xff0c;数据包里面就包含TCP类型的首部信息&#xff0c;…

【Python入门】第6节 函数进阶

&#x1f4d6;第6节 函数进阶 ✅函数多返回值✅函数多种传参方式&#x1f9ca;位置参数&#x1f9ca;关键字参数&#x1f9ca;缺省参数&#x1f9ca;不定长参数 ✅匿名函数&#x1f9ca;函数作为参数传递&#x1f9ca;lambda匿名函数 ✅函数多返回值 如果一个函数要有多个返回…

在SimpleRAG中使用SiliconCloud快速测试Function Calling

Funcion Calling介绍 函数调用允许您将模型如gpt-4o与外部工具和系统连接起来。这对于许多事情都很有用&#xff0c;比如为AI助手赋能&#xff0c;或者在你的应用程序与模型之间建立深度集成。 如果您了解或者使用过Semantic Kernel可能会发现除了OpenAI支持Function Calling…

HTML爱心字母雨

目录 写在前面 完整代码 代码分析​​​​​​​ 系列推荐 写在最后 写在前面 本期小编给大家带来了爱心与字母雨的融合效果&#xff0c;既实用又炫酷&#xff0c;快来看看吧~ HTML&#xff0c;全称为HyperText Markup Language&#xff0c;是用于创建网页的标准标记语言…

Mesh 网格曲面栅格化

Mesh 网格曲面栅格化 使用CGAL将地形曲面网格体栅格化。 Code #include<iostream> #include<cmath>#include<CGAL/Surface_mesh.h> #include<CGAL/Surface_mesh/IO/PLY.h>#include <CGAL/Exact_predicates_inexact_constructions_kernel.h> #…

使用Masscan扫描器进行信息搜集

Masscan 是一款极为高效的端口扫描工具&#xff0c;以其卓越的扫描速度和大规模扫描能力而著称。该工具不仅支持 TCP 和 UDP 协议的扫描&#xff0c;还允许用户根据需求灵活指定多个目标和端口。Masscan 通过采用先进的网络性能优化技术&#xff0c;充分利用操作系统的资源和多…

更轻量级的性能测试工具—Apache Bench

之前一直使用的Jmeter进行接口性能测试&#xff0c;但是AB工具是很轻量级、快速开箱即用的。 yum安装 yum install -y httpd-tools 安装完成后&#xff0c;通过 ab -V 命令验证安装情况&#xff0c;如下表示安装成功 通过如下命令可以查看如何使用AB工具: 模拟请求示例&am…

在编程学习中,如何有效地管理时间和避免拖延?

在编程学习中&#xff0c;有效的时间管理和避免拖延是成功的关键因素。以下是一些实用的策略&#xff1a; 1. 明确目标 设定清晰的学习目标&#xff0c;了解你想要达成的技能水平。目标要具体、可衡量、可实现、相关性强、时限性&#xff08;SMART&#xff09;。 2. 制定计划…

19.神经网络 - 线性层及其他层介绍

神经网络 - 线性层及其他层介绍 1.批标准化层–归一化层&#xff08;不难&#xff0c;自学看官方文档&#xff09; Normalization Layers torch.nn — PyTorch 1.10 documentation BatchNorm2d — PyTorch 1.10 documentation 对输入采用Batch Normalization&#xff0c;可…

[AI]从零开始的so-vits-svc webui部署教程(小白向)

一、本次教程是给谁的&#xff1f; 如果你点进了这篇教程&#xff0c;相信你已经知道so-vits-svc是什么了&#xff0c;那么我们这里就不过多讲述了。如果你还不知道so-vits-svc能做什么&#xff0c;可以去b站搜索一下&#xff0c;你大概率会搜索到一些AI合成的音乐&#xff0c;…

SQL 注入之 WAF 绕过

在当今的网络安全环境中&#xff0c;SQL 注入攻击一直是一个严重的威胁&#xff0c;而 Web 应用防火墙&#xff08;WAF&#xff09;则是抵御此类攻击的重要防线。然而&#xff0c;攻击者们不断探索各种方法来绕过 WAF&#xff0c;以实现他们的恶意目的。本文将深入探讨 SQL 注入…