当前位置: 首页 > news >正文

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排序算法 直接插入排序法和折半插入排序法

最近需要使用到一些排序算法&#xff0c;今天主要使针对直接插入排序和折半插入排序进行讲解。 首先是直接插入排序&#xff0c;其排序过程主要是&#xff0c;针对A[a1,a2,a3,a4,a5....an]&#xff0c;从排序的序列头部起始位置开始&#xff0c;将其也就是a1视为只有一个元素的…...

【flutter对抗】blutter使用+ACTF习题

最新的能很好反编译flutter程序的项目 1、安装 git clone https://github.com/worawit/blutter --depth1 然后我直接将对应的两个压缩包下载下来&#xff08;通过浏览器手动下载&#xff09; 不再通过python的代码来下载&#xff0c;之前一直卡在这个地方。 如果读者可以正…...

OpenHarmony 如何去除系统锁屏应用

前言 OpenHarmony源码版本&#xff1a;4.0release / 3.2 release 开发板&#xff1a;DAYU / rk3568 一、3.2版本去除锁屏应用 在源码根目录下&#xff1a;productdefine/common/inherit/rich.json 中删除screenlock_mgr组件的编译配置&#xff0c;在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、构造函数 构造函数是一种特殊的方法&#xff0c;用于在创建类的实例时进行初始化操作。构造函数与类同名&#xff0c;并且没有返回类型。 构造函数在对象创建时自动调用&#xff0c;可以用来设置对象的初始状态、分配内存、初始化字段等操作…...

jmeter 如何循环使用接口返回的多值?

有同学在用jmeter做接口测试的时候&#xff0c;经常会遇到这样一种情况&#xff1a; 就是一个接口请求返回了多个值&#xff0c;然后下一个接口想循环使用前一个接口的返回值。 这种要怎么做呢&#xff1f; 有一定基础的人&#xff0c;可能第一反应就是先提取前一个接口返回…...

VLAN 详解一(VLAN 基本原理及 VLAN 划分原则)

VLAN 详解一&#xff08;VLAN 基本原理及 VLAN 划分原则&#xff09; 在早期的交换网络中&#xff0c;网络中只有 PC、终端和交换机&#xff0c;当某台主机发送一个广播帧或未知单播帧时&#xff0c;该数据帧会被泛洪&#xff0c;甚至传递到整个广播域。而广播域越大&#xff…...

Android - 分区存储 MediaStore、SAF

官方页面 参考文章 一、概念 分区存储&#xff08;Scoped Storage&#xff09;的推出是针对 APP 访问外部存储的行为&#xff08;乱建乱获取文件和文件夹&#xff09;进行规范和限制&#xff0c;以减少混乱使得用户能更好的控制自己的文件。 公有目录被分为两大类&#xff1a;…...

Shiro框架权限控制

首先去通过配置类的用户认证&#xff0c;在用户认证完成后&#xff0c;进行用户授权&#xff0c;用户通过授权之后再跳转其他的界面时&#xff0c;会进行一个验证&#xff0c;当前账号是否有权限。 前端权限控制显示的原理 在前端中&#xff0c;通常使用用户的角色或权限信息来…...

centOS7 安装tailscale并启用子网路由

1、在centOS7上安装Tailscale客户端 #安装命令所在官网位置&#xff1a;https://tailscale.com/download/linux #具体命令为&#xff1a; curl -fsSL https://tailscale.com/install.sh | sh #命令执行后如下图所示2、设置允许IP转发和IP伪装。 安装后&#xff0c;您可以启动…...

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 语句的实现&#xff08;并且因此而扩展 __import__() 函数&#xff09;。 这提供了一个可移植到任何 Python 解释器的 import 实现。 与使用 Python 以…...

【PyTorch】现代卷积神经网络

文章目录 1. 理论介绍1.1. 深度卷积神经网络&#xff08;AlexNet&#xff09;1.1.1. 概述1.1.2. 模型设计 1.2. 使用块的网络&#xff08;VGG&#xff09;1.3. 网络中的网络&#xff08;NiN&#xff09;1.4. 含并行连结的网络&#xff08;GoogLeNet&#xff09;1.5. 批量规范化…...

用python编写九九乘法表

1 问题 我们在学习一门语言的过程中&#xff0c;都会练习到编写九九乘法表这个代码&#xff0c;下面介绍如何编写九九乘法表的流程。 2 方法 &#xff08;1&#xff09;打开pycharm集成开发环境&#xff0c;创建一个python文件&#xff0c;并编写第一行代码&#xff0c;主要构建…...

Google Gemini 模型本地可视化

Google近期发布了Gemini模型&#xff0c;而且开放了Gemini Pro API&#xff0c;Gemini Pro 可免费使用&#xff01; Gemini Pro支持全球180个国家的38种语言&#xff0c;目前接受文本、图片作为输入并生成文本作为输出。 Gemini Pro的表现超越了其他同类模型&#xff0c;当前版…...

数据修复:.BlackBit勒索病毒来袭,安全应对方法解析

导言&#xff1a; 黑色数字罪犯的新玩具——.BlackBit勒索病毒&#xff0c;近来成为网络安全领域的头号威胁。这种恶意软件以其高度隐秘性和毁灭性而引起广泛关注。下面是关于.BlackBit勒索病毒的详细介绍&#xff0c;如不幸感染这个勒索病毒&#xff0c;您可添加我们的技术服…...

拓扑排序实现循环依赖判断 | 京东云技术团队

本文记录如何通过拓扑排序&#xff0c;实现循环依赖判断 前言 一般提到循环依赖&#xff0c;首先想到的就是Spring框架提供的Bean的循环依赖检测&#xff0c;相关文档可参考&#xff1a; https://blog.csdn.net/cristianoxm/article/details/113246104 本文方案脱离Spring Be…...

Java的NIO工作机制

文章目录 1. 问题引入2. NIO的工作方式3. Buffer的工作方式4. NIO数据访问方式 1. 问题引入 在网络通信中&#xff0c;当连接已经建立成功&#xff0c;服务端和客户端都会拥有一个Socket实例&#xff0c;每个Socket实例都有一个InputStream和OutputStream&#xff0c;并通过这…...

一个简单的光线追踪渲染器

前言 本文参照自raytracing in one weekend教程&#xff0c;地址为&#xff1a;https://raytracing.github.io/books/RayTracingInOneWeekend.html 什么是光线追踪&#xff1f; 光线追踪模拟现实中的成像原理&#xff0c;通过模拟一条条直线在场景内反射折射&#xff0c;最终…...

C++学习笔记(十二)------is_a关系(继承关系)

你好&#xff0c;这里是争做图书馆扫地僧的小白。 个人主页&#xff1a;争做图书馆扫地僧的小白_-CSDN博客 目标&#xff1a;希望通过学习技术&#xff0c;期待着改变世界。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 文章目录 前言 一、继承关系…...

别再只用LSTM了!试试用XGBoost给它‘打补丁’,Python时序预测精度提升实战

突破LSTM瓶颈&#xff1a;用XGBoost残差修正提升时序预测精度的工程实践 当你在电商平台的销量预测中&#xff0c;LSTM已经能捕捉到季节性波动和长期趋势&#xff0c;但每逢促销活动时预测总会出现明显偏差&#xff1b;当你在服务器负载监控中&#xff0c;LSTM模型对日常流量模…...

手把手教你用PLECS画波德图:从AC Sweep设置到看懂相位裕度,避坑指南

从零开始掌握PLECS波德图分析&#xff1a;工程师必备的频域诊断手册 第一次在PLECS里点击"AC Sweep"按钮时&#xff0c;我盯着满屏的参数选项发呆了十分钟。作为电力电子工程师&#xff0c;我们总说"看波德图就像看电路的体检报告"&#xff0c;但当你真正面…...

Ostrakon-VL-8B智能代理(Agent)实践:自动化巡检餐厅后厨

Ostrakon-VL-8B智能代理实践&#xff1a;自动化巡检餐厅后厨 你有没有想过&#xff0c;如果餐厅后厨能有一个不知疲倦、眼力超群的“数字监工”&#xff0c;每天自动检查安全隐患和操作规范&#xff0c;那会是什么场景&#xff1f;过去&#xff0c;这可能需要一个经验丰富的厨…...

DriverStore Explorer:释放磁盘空间的开源驱动管理工具

DriverStore Explorer&#xff1a;释放磁盘空间的开源驱动管理工具 【免费下载链接】DriverStoreExplorer Driver Store Explorer [RAPR] 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 1. 诊断驱动膨胀&#xff1a;3个隐藏原因解析 你的C盘空间是…...

Qwen3-4B Instruct-2507实际作品:用户说‘我要创业’→商业计划书框架生成

Qwen3-4B Instruct-2507实际作品&#xff1a;用户说‘我要创业’→商业计划书框架生成 1. 引言&#xff1a;当创业想法遇到AI助手 “我要创业&#xff01;” 这句话背后&#xff0c;往往是一个激动人心的想法&#xff0c;但随之而来的是一连串的现实问题&#xff1a;我的商业…...

Llama-3.2V-11B-cot代码实例:Streamlit中图片上传与缓存机制

Llama-3.2V-11B-cot代码实例&#xff1a;Streamlit中图片上传与缓存机制 1. 项目概述 Llama-3.2V-11B-cot是基于Meta Llama-3.2V-11B-cot多模态大模型开发的高性能视觉推理工具&#xff0c;专为双卡4090环境优化。该工具通过Streamlit构建了直观易用的交互界面&#xff0c;特…...

从Blender到虚幻引擎:除了FBX,试试GLTF格式导入的完整流程与优势对比

从Blender到虚幻引擎&#xff1a;GLTF格式导入的完整流程与优势解析 在三维内容创作领域&#xff0c;Blender与虚幻引擎的组合已经成为许多专业团队的标准工具链。当我们需要将精心制作的模型从Blender迁移到虚幻引擎时&#xff0c;传统的FBX格式虽然广为人知&#xff0c;但GLT…...

OpenClaw权限管理:Qwen3-VL:30B飞书助手分级控制方案

OpenClaw权限管理&#xff1a;Qwen3-VL:30B飞书助手分级控制方案 1. 为什么需要权限管理 当我第一次在团队内部署OpenClaw飞书助手时&#xff0c;很快就遇到了一个现实问题&#xff1a;不同部门的同事对AI助手的操作需求差异巨大。财务组需要处理报销单据识别&#xff0c;研发…...

FPGA Multiboot翻车实录:从XDC配置到ICAPE2,我的W25Q128分区血泪史与避坑指南

FPGA Multiboot实战&#xff1a;从配置陷阱到Flash分区优化的全流程解析 第一次在量产产品中实现FPGA远程更新功能时&#xff0c;我盯着实验室里突然变砖的开发板&#xff0c;后背渗出一层冷汗。原本以为按照官方文档配置就能万无一失&#xff0c;没想到Multiboot这个看似简单的…...

第三章 Qt 编译及安装

1. Qt 编译安装 2 Qt 在线安装 在线安装包的下载地址&#xff1a; https://download.qt.io/official_releases/online_installers/ Qt对不同的平台提供了不同版本的安装包&#xff0c;可根据实际情况自行下载安装&#xff0c;本文档使用qt-online-installer-windows-x64-on…...