python排序算法 直接插入排序法和折半插入排序法
最近需要使用到一些排序算法,今天主要使针对直接插入排序和折半插入排序进行讲解。
首先是直接插入排序,其排序过程主要是,针对A[a1,a2,a3,a4,a5....an],从排序的序列头部起始位置开始,将其也就是a1视为只有一个元素的子集合B[a1],这个B子集合本身就是有序的。
然后从a1之后的所有元素,也就是从a2开始,每次将a2到an按照正序或者倒序的方式插入到有序的这个B子集合中去,这样最终能够得到包含所有A集合的元素的B集合,这也就是最后的有序的A集合。

添加图片注释,不超过 140 字(可选)
示意图如上,对应的A集合和B集合,每次循环B集合增加一个元素,最后就得到正序的A集合。
直接排序的python实现如下:
def quickSort(nums):for i in range(1, len(nums)):key = nums[i]j = i - 1while j >= 0 and key < nums[j]:nums[j + 1] = nums[j]j -= 1nums[j + 1] = keyreturn nums

A = [60, 30, 80, 19],对A集合使用直接排序后的输出结果
然后就是折半插入排序,其主要是为了降低直接插入排序法的时间复杂度,对直接插入进行了一定的改进,减少插入过程中的比较次数,其实现主要是使用双指针的方式,low和high指针,这两个指针指向有序子集合的头和尾,然后取(low+high)/2的向下取整即是mid,根据每次与mid指向的值对比,如果大于这个值,则这个值应该在mid与high之间,如果小于这个值,则该值应该在mid和low之间。折半插入的实现如下:
def halfSort(nums):for i in range(1, len(nums)):key = nums[i]high = i - 1low = 0while (low <= high):mid = int((low + high) / 2)if (key >= nums[mid]):low = mid + 1if (key <= nums[mid]):high = mid - 1j = i - 1while (j >= low):nums[j + 1] = nums[j]j -= 1nums[low] = keyreturn nums

B=[20,30,90,10,28,49,20,41,42,78],对B进行折半插入排序之后的输出结果
以上就是两个排序的实现方法。
相关文章:
python排序算法 直接插入排序法和折半插入排序法
最近需要使用到一些排序算法,今天主要使针对直接插入排序和折半插入排序进行讲解。 首先是直接插入排序,其排序过程主要是,针对A[a1,a2,a3,a4,a5....an],从排序的序列头部起始位置开始,将其也就是a1视为只有一个元素的…...
【flutter对抗】blutter使用+ACTF习题
最新的能很好反编译flutter程序的项目 1、安装 git clone https://github.com/worawit/blutter --depth1 然后我直接将对应的两个压缩包下载下来(通过浏览器手动下载) 不再通过python的代码来下载,之前一直卡在这个地方。 如果读者可以正…...
OpenHarmony 如何去除系统锁屏应用
前言 OpenHarmony源码版本:4.0release / 3.2 release 开发板:DAYU / rk3568 一、3.2版本去除锁屏应用 在源码根目录下:productdefine/common/inherit/rich.json 中删除screenlock_mgr组件的编译配置,在rich.json文件中搜索th…...
Python - 搭建 Flask 服务实现图像、视频修复需求
目录 一.引言 二.服务构建 1.主函数 upload_gif 2.文件接收 3.专属目录 4.图像修复 5.gif2mp4 6.mp42gif 7.图像返回 三.服务测试 1.服务启动 2.服务调用 四.总结 一.引言 前面我们介绍了如何使用 Real-ESRGAN 进行图像增强并在原始格式 jpeg、jpg、mp4 的基础上…...
C#基础——构造函数、析构函数
C#基础——构造函数、析构函数 1、构造函数 构造函数是一种特殊的方法,用于在创建类的实例时进行初始化操作。构造函数与类同名,并且没有返回类型。 构造函数在对象创建时自动调用,可以用来设置对象的初始状态、分配内存、初始化字段等操作…...
jmeter 如何循环使用接口返回的多值?
有同学在用jmeter做接口测试的时候,经常会遇到这样一种情况: 就是一个接口请求返回了多个值,然后下一个接口想循环使用前一个接口的返回值。 这种要怎么做呢? 有一定基础的人,可能第一反应就是先提取前一个接口返回…...
VLAN 详解一(VLAN 基本原理及 VLAN 划分原则)
VLAN 详解一(VLAN 基本原理及 VLAN 划分原则) 在早期的交换网络中,网络中只有 PC、终端和交换机,当某台主机发送一个广播帧或未知单播帧时,该数据帧会被泛洪,甚至传递到整个广播域。而广播域越大ÿ…...
Android - 分区存储 MediaStore、SAF
官方页面 参考文章 一、概念 分区存储(Scoped Storage)的推出是针对 APP 访问外部存储的行为(乱建乱获取文件和文件夹)进行规范和限制,以减少混乱使得用户能更好的控制自己的文件。 公有目录被分为两大类:…...
Shiro框架权限控制
首先去通过配置类的用户认证,在用户认证完成后,进行用户授权,用户通过授权之后再跳转其他的界面时,会进行一个验证,当前账号是否有权限。 前端权限控制显示的原理 在前端中,通常使用用户的角色或权限信息来…...
centOS7 安装tailscale并启用子网路由
1、在centOS7上安装Tailscale客户端 #安装命令所在官网位置:https://tailscale.com/download/linux #具体命令为: curl -fsSL https://tailscale.com/install.sh | sh #命令执行后如下图所示2、设置允许IP转发和IP伪装。 安装后,您可以启动…...
spring 项目中如何处理跨越cors问题
1.使用 CrossOrigin 注解 作用于controller 方法上 示例如下 RestController RequestMapping("/account") public class AccountController {CrossOriginGetMapping("/{id}")public Account retrieve(PathVariable Long id) {// ...}DeleteMapping(&quo…...
importlib --- import 的实现
3.1 新版功能. 源代码 Lib/importlib/__init__.py 概述 importlib 包具有三重目标。 一是在 Python 源代码中提供 import 语句的实现(并且因此而扩展 __import__() 函数)。 这提供了一个可移植到任何 Python 解释器的 import 实现。 与使用 Python 以…...
【PyTorch】现代卷积神经网络
文章目录 1. 理论介绍1.1. 深度卷积神经网络(AlexNet)1.1.1. 概述1.1.2. 模型设计 1.2. 使用块的网络(VGG)1.3. 网络中的网络(NiN)1.4. 含并行连结的网络(GoogLeNet)1.5. 批量规范化…...
用python编写九九乘法表
1 问题 我们在学习一门语言的过程中,都会练习到编写九九乘法表这个代码,下面介绍如何编写九九乘法表的流程。 2 方法 (1)打开pycharm集成开发环境,创建一个python文件,并编写第一行代码,主要构建…...
Google Gemini 模型本地可视化
Google近期发布了Gemini模型,而且开放了Gemini Pro API,Gemini Pro 可免费使用! Gemini Pro支持全球180个国家的38种语言,目前接受文本、图片作为输入并生成文本作为输出。 Gemini Pro的表现超越了其他同类模型,当前版…...
数据修复:.BlackBit勒索病毒来袭,安全应对方法解析
导言: 黑色数字罪犯的新玩具——.BlackBit勒索病毒,近来成为网络安全领域的头号威胁。这种恶意软件以其高度隐秘性和毁灭性而引起广泛关注。下面是关于.BlackBit勒索病毒的详细介绍,如不幸感染这个勒索病毒,您可添加我们的技术服…...
拓扑排序实现循环依赖判断 | 京东云技术团队
本文记录如何通过拓扑排序,实现循环依赖判断 前言 一般提到循环依赖,首先想到的就是Spring框架提供的Bean的循环依赖检测,相关文档可参考: https://blog.csdn.net/cristianoxm/article/details/113246104 本文方案脱离Spring Be…...
Java的NIO工作机制
文章目录 1. 问题引入2. NIO的工作方式3. Buffer的工作方式4. NIO数据访问方式 1. 问题引入 在网络通信中,当连接已经建立成功,服务端和客户端都会拥有一个Socket实例,每个Socket实例都有一个InputStream和OutputStream,并通过这…...
一个简单的光线追踪渲染器
前言 本文参照自raytracing in one weekend教程,地址为:https://raytracing.github.io/books/RayTracingInOneWeekend.html 什么是光线追踪? 光线追踪模拟现实中的成像原理,通过模拟一条条直线在场景内反射折射,最终…...
C++学习笔记(十二)------is_a关系(继承关系)
你好,这里是争做图书馆扫地僧的小白。 个人主页:争做图书馆扫地僧的小白_-CSDN博客 目标:希望通过学习技术,期待着改变世界。 提示:以下是本篇文章正文内容,下面案例可供参考 文章目录 前言 一、继承关系…...
【实战篇 / ZTNA】(7.0) ❀ 从零到一:FortiClient 7.0 企业级部署与策略配置全解析 ❀ FortiGate 防火墙
1. FortiClient 7.0 企业级部署前的关键规划 企业级部署FortiClient 7.0绝非简单的软件安装,而是涉及终端安全架构的整体升级。我在多个金融和制造业客户的实际部署中发现,前期规划不充分往往导致后期策略调整困难。首先需要明确的是,FortiCl…...
终极Python代码混淆指南:保护敏感逻辑的7个实用方法
终极Python代码混淆指南:保护敏感逻辑的7个实用方法 【免费下载链接】python-mastery Advanced Python Mastery (course by dabeaz) 项目地址: https://gitcode.com/gh_mirrors/py/python-mastery GitHub 加速计划 / py / python-mastery项目是 Advanced Pyt…...
designmodel可以输出各种类型的几何模型文件格式,兼容各种主流的CAD绘制软件。
designmodel可以输出各种类型的几何模型文件格式,兼容各种主流的CAD绘制软件。 这是Geom软件的文件格式选择界面,各格式的用途和适用场景如下: DesignModeler Database (*.agdb):ANSYS DesignModeler的原生数据库格式,用于保存几何模型的完整设计数据,支持后续在ANSYS…...
魔兽争霸3游戏优化终极指南:3步解决帧率限制与界面显示问题
魔兽争霸3游戏优化终极指南:3步解决帧率限制与界面显示问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3的卡顿画面和界…...
Kubernetes智能运维助手:基于LLM的kube-copilot实战指南
1. 项目概述:当Kubernetes遇上AI副驾驶如果你和我一样,每天都要和Kubernetes集群打交道,那你肯定对下面这些场景不陌生:凌晨三点被告警叫醒,面对一个不断重启的Pod,需要手动执行一串kubectl describe、kube…...
云薪酬系统与传统系统的核心差异与实施指南
1. 云薪酬系统与传统系统的本质差异薪酬管理作为企业人力资源的核心模块,经历了从手工台账到本地软件再到云端服务的演进历程。我曾为多家企业实施过新旧系统的替换,深刻体会到两种架构的根本区别不仅在于技术实现,更在于管理理念的革新。传统…...
告别单条弹窗!ABAP里用MESSAGES_SHOW函数批量展示多条消息的保姆级教程
ABAP批量消息展示实战:用MESSAGES_SHOW优化用户交互体验 在SAP系统的日常开发中,消息处理是每个ABAP开发者都无法回避的核心功能。传统的单条弹窗方式虽然简单直接,但在处理批量数据校验、复杂业务逻辑时,频繁弹出的消息窗口不仅打…...
MCP Jenkins Intelligence:基于AI的Jenkins智能运维与效率提升实践
1. 项目概述:当Jenkins遇上AI,DevOps的“副驾驶”来了如果你和我一样,每天都要和Jenkins打交道,盯着那些流水线看构建状态、查失败日志、分析性能瓶颈,那你肯定也幻想过:要是能像聊天一样问它问题就好了。比…...
嘉兴看牙哪家靠谱?2026年本地6家口腔机构实测排行榜(纯生活体验版)
问这个问题的人,多半是被坑过、排过队、或者被推销烦过。作为一个在嘉兴生活了快十年的普通市民,补牙、洗牙、带孩子看牙都经历过,我也踩过不少坑。这次花了两周时间,跑了南湖、秀洲、平湖几家口碑还行的口腔机构,纯从…...
MySQL 比较规则(Collation)详解
一、概述 比较规则(Collation) 是一组定义如何比较和排序字符集中字符的规则。它决定了: 字符串的大小写是否敏感(A a?)重音符号是否敏感( e?)多语言字符的排序顺序&…...
