插入排序-直接插入排序

插入排序(直接插入排序、折半插入排序和希尔排序) 所谓插入排序就是将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中,直到全部记录插入完成。 1.直接插入排序 假设在排序过程中,待排序表L[1…n]在某次排序过程中的某一时刻状态如下: 为了实现将元素L[i]插入到已有序列的子序列L[1…i-1]中,需要执行以下操作: (1)查找L(i)在L[1…i-1]中的插入位置。注意是从1到n !!! (2) 将L[k…i-1]中所有元素全部后移一个位置。 (3)将L(i)复制到L(k)。 为了实现对L[1…n]的排序,可以将L(2)~L(n)依次插 阅读详情

直接插入排序

一、定义

  直接插入排序是最简单的排序方法,它的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录增1的有序表。

二、具体实现

  整个排序过程为进行n - 1趟插入,即先将序列中的第一个记录看成是一个有序的子序列,然后从第二个记录开始逐个进行插入,直至整个序列变成按关键字非递减有序为止。
  从空间来看,它只需要一个记录辅助空间,从时间来看,排序的基本操作为:比较两个关键字的大小和移动记录。直接插入排序是稳定排序算法,时间复杂度为o(n^2);
在这里插入图片描述

//list[0]不做哨兵
void insert_sort(ElementType list[],int n){
    ElementType temp;//辅助存储空间
    int i,j;
    for(i = 1;i < n;i++){
        temp = list[i];
        for(j = i - 1;j >= 0 && list[j] > temp;j--)//往后移动,直至遇到比temp小的值为止。
            list[j + 1] = list[j];     
        list[j + 1] = temp;//插入位置
    } 
}
内部排序(一)直接插入排序和二分插入排序 我们都知道,程序=数据结构+算法。数据结构和算法是密切相关的,因为不同的数据结构配合不同的算法,会有不同的效率。排序是最常见的算法之一,功能顾名思义是将一个数据对象(即数据元素的集合)重新排列成遵循某种规则的序列。例如在构建二叉搜索树的过程中也有排序的过(插入节点过程中左子树小于其父节点,右子树大于其父结点 )程。排序是程序设计中的一种重要操作,因为对于无序的序列,进行查找操作时,我们只能用顺序查... 阅读详情

相关推荐

【数据结构】插入排序 — 直接插入排序

​直接插入排序是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。

四季轮换叶,一路招摇胜 1万+

排序算法——直接插入排序(图文超详细!)

简介 英文名:Straight Insertion Sort 也是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表 步骤 以下用数组2,5,8,3,6,9,1,4,7为例 从小到大排序 1.先看第一个数,将数组划分为有序和无序部分 首先看第一个数2,一个数必然有序,所以将2划分有序,后面都是无序 2.无序部分的首个插入到有序部分 取出无序部分的首个,在有序部分从后向前比较,插入到合适的位置 3.重复第2步直到无序部分全部插入有序

qq_44616044的博客 19万+

外设高级定时器互补输出带死区控制实验

外设高级定时器互补输出带死区控制实验

ff_juju的博客 1652

排序算法 —— 直接插入排序(图文超详细)

java 实现七大排序算法中的直接插入排序

超烦豆先森 1万+

Google OR-Tools的CP-SAT求解器,为什么比传统线性规划更适合你的组合优化问题?

本文深入解析Google OR-Tools中的CP-SAT求解器为何比传统线性规划更适合解决组合优化问题。CP-SAT融合约束规划与可满足性理论,原生支持复杂逻辑约束和离散决策,在物流、生产调度等领域展现出显著优势。通过技术对比和实战案例,展示CP-SAT在处理高组合复杂度问题时的卓越性能。

weixin_28700593的博客 922

Windows非分页缓冲池内存泄漏实战:PoolMon与RAMMap高效排查指南

本文详细介绍了Windows系统中非分页缓冲池内存泄漏的实战排查方法。当系统出现卡顿且内存占用异常增长时,通过RAMMap工具快速定位非分页缓冲池异常,并利用PoolMon监控内核内存分配标签,精准锁定泄漏源。文章提供了从确认症状、安装工具到使用findstr命令溯源驱动文件的完整五步排查流程,并总结了常见泄漏标签与解决方案,帮助用户高效解决深层系统内存问题。

weixin_28455801的博客 1009

直接插入排序-C语言(带图详细)

经典插入排序算法-直接插入排序算法带图详细(动图) 直接插入排序是一种最简单的排序方法,其基本操作是将需要排序的元素插入到已排好的有序表序列中,从而得到一个完整的有序序列。

小陈没烦恼 3万+

项目管理中 PMO 的关键职能解析

在企业数字化转型与战略落地的浪潮中,PMO(Project Management Office,项目管理办公室)逐渐从“项目辅助角色”升级为“组织级战略执行中枢”。然而,多数人对PMO的认知仍停留在“管项目的部门”或“文档审核机器”的层面。本文将打破误解,通过生活化类比(如“中枢神经”“导航系统”)、流程图解(战略对齐循环)、实际案例(制造企业PMO升级),深入解析PMO的五大核心职能:战略对齐、流程标准化、资源管理、绩效监控、知识沉淀。最终揭示PMO的本质——

项目管理的博客 1250

【数据结构】八大排序之直接插入排序算法

数据结构基本交换排序算法之直接插入排序排序详解.内容包括:直接插入排序的简介及实现思路,代码实现,优化,最好情况和最坏情况的时间复杂度分析.

C/C++领域,数据结构,linux,MySQl学习者 5115

LabVIEW内存优化实战:用DVR和队列高效处理大型数组,告别数据副本

本文深入探讨LabVIEW内存优化技术,重点介绍数据值引用(DVR)和单元素队列(SEQs)在高效处理大型数组中的应用。通过对比传统方法与现代引用技术的性能差异,提供减少内存副本、提升程序效率的实战方案,帮助开发者在测试测量、图像处理等数据密集型场景中实现显著性能提升。

weixin_30835649的博客 1061

【PCIe硬件】PCIe引脚PRSNT与热插拔

热插拔的基本目的是要让PCIe设备按照规定的顺序、原则,从系统中移除或插入到系统中来,并能正常的工作,且不影响系统的正常运行。事实上,PCIe“热插拔”的关键目的就是为前面面所提到的系统RAS服务的,是提升系统RAS能力的非常重要的手段!注意,这里有两个相关概念,前面我们讲的热插拔,其实是广义的“热插拔”。这里的Hot-Plug,为了方便,我们叫做PCIe热插拔,也就是我们现在及后面将要讨论的内容。

smartvxworks的博客 2804

插入排序(直接插入排序、折半插入排序、希尔排序的算法思想及代码实现)

文章目录插入排序的基本思想直接插入排序直接插入排序的算法思想直接插入排序的实现代码直接插入排序的性能分析折半插入排序折半插入排序的算法思想折半插入排序的实现代码折半插入排序的性能分析希尔排序希尔排序的算法思想希尔排序的实现代码希尔排序的性能分析完整代码 插入排序的基本思想 插入排序是一种简单直观的排序方法,其基本思想是:每一次将一个待排记录按其关键字大小插入到前面已经排好序的有序子序列中,直到全部记录插入完成。 由插入排序的思想可以引申出三个重要的排序算法: 直接插入排序 折半插入排序 希尔排序

薛定谔的猫的博客 3779

在 SAP BTP 中玩转工厂日历 Maintain Factory Calendars 实战指南

工厂日历是企业关键的时间主数据,基于国家假日历定义工作日与非工作日,广泛应用于生产计划、采购交期、财务结账等业务场景。SAP系统通过三类应用(维护节假日、假日历和工厂日历)实现分层配置。工厂日历作为顶层配置,支持工作日模式设定和例外规则添加。在多系统架构中,工厂日历可通过集成场景同步,确保数据一致性。应用支持创建、编辑和查看功能,包含有效期设置、例外规则管理和多语言文本维护。合理设置工厂日历对业务运营至关重要,需注意命名规范和有效期选择,避免历史数据问题。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 222

直接插入排序、折半插入排序、shell插入排序

直接插入排序: /*直接插入排序(升序排列) 2013/10/13 B区自习室(正在学习C/C++常用算法手册) Created By qianshou */ #include #include #define SIZE 10 using namespace std; void InsertSort(int *a,int len) { int i,j,t,k; for(

学如逆水行舟,不进则退 1371

YOLO26小目标检测实战:STAL标签分配+MuSGD优化,VisDrone数据集漏检率降50%

小目标检测是计算机视觉的经典难题,而VisDrone数据集小目标占比极高:数据集中小目标(像素面积<32×32)占比超过60%,且大量目标仅为几个像素,特征信息极度匮乏;背景复杂且干扰多:无人机航拍场景包含建筑物、树木、人群、车辆等复杂背景,小目标易被背景淹没;尺度变化与遮挡严重:同一目标在不同帧中尺度差异大,且小目标极易被其他目标遮挡;传统模型的固有缺陷标签分配策略(如ATSS、SimOTA)偏向大目标,小目标的正样本分配不足,导致模型对小目标不敏感;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1186

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

直接插入排序以及折半插入排序详解

一、直接插入排序 每次将一个待排序的序列插入到一个前面已排好序的子序列当中 使用到了顺序查找 图片演示 前面是有序的,逐步逐步将后面的插入到前面去 实现步骤 初始L[1]L[1]L[1] 是一个已经排好序的子序列 对于元素L(i)    (L(2)∼L(n)L(i)\;\;(L(2) \sim L(n)L(i)(L(2)∼L(n)插入到前面已经排好序的子序列当中 查找出 L(i)L(i...

Jimmy Huang's Blog 3907

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

插入排序--直接插入排序,折半插入排序,希尔排序

插入排序--直接插入排序,折半插入排序,希尔排序

m0_75220252的博客 2219

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【数据结构】插入排序(直接插入排序 && 希尔排序)

1️⃣元素集合越接近有序,直接插入排序算法的时间效率越高2️⃣此时待排序列为逆序,或者说接近逆序O(N^2)此时待排序列为升序,或者说接近升序O(N)3️⃣空间复杂度O(1),它是一种稳定的排序算法4️⃣稳定性直接插入排序在遇到相同的数时,可以就放在这个数的后面,就可以保持稳定性了,所以说这个排序是稳定的。希尔排序是对直接插入排序的优化。当gap>1时都是预排序,目的是让数组更接近于有序。当gap==1时,数组已经接近有序的了,这样就会很快。这样整体而言,可以达到优化的效果。🎉🎉。.........

qq_42996461的博客 2736

插入排序->{直接插入排序,二分插入排序,希尔插入排序}

插入排序->{直接插入排序,二分插入排序,希尔插入排序} 直接插入排序 原理:设有一组关键字{K1, K2,…, Kn};排序开始就认为 K1 是一个有序序列;让 K2 插入上述表长为 1 的有序序列,使之成为一个表长为 2 的有序序列;然后让 K3 插入上述表长为 2 的有序序列,使之成为一个表长为 3 的有序序列;依次类推,最后让 Kn 插入上述表长为 n-1 的有序序列,得一个表长为 ...

qq_36879870的博客 315

常见排序算法之插入排序——直接插入排序、希尔排序

哈喽大家好,我是保护小周,本期为大家带来的是常见排序算法中的插入排序,主要有直接插入排序以及它的升级版——希尔排序,包您一看就会,快来试试吧~

保护小周ღ的博客 2748

排序算法 插入排序(直接插入排序、折半插入排序、希尔排序)

所谓折半比较,就是在插入A[i]时,取A[i-1/2]的关键码值与A[i]的关键码值进行比较,如果A[i]的关键码值小于A[i-1/2]的关键码值,则说明A[i]只能插入A[0]到A[i-1/2]之间,故可以在A[0]到A[i-1/2-1]之间继续使用折半比较;(1)计算 0 ~ i-1 的中间点,用 i 索引处的元素与中间值进行比较,如果 i 索引处的元素大,说明要插入的这个元素应该在中间值和刚加入i索引之间,反之,就是在刚开始的位置 到中间值的位置,这样很简单的完成了折半;(2)设置开始查找的位置j;

qq_36511401的博客 1万+

数据结构-插入排序(直接插入排序,二分插入排序,希尔排序)

1,插入排序思想 插入排序是一种简单直观的排序方法,其基本思想是每次将一个待排序的记录按其关键字大小插入到前面己排好序的子序列中,直到全部记录插入完成。由插入排序的思想可以引申出三个 重要的排序算法:直接插入排序、折半插入排序和希尔排序。 2,直接插入排序 2.1,直接插入排序 根据上面的插入排序思想,不难得出一种最简单也最直观的直接插入排序算法。假设在排序过程中,待排序表L [1...n ] 在某次排序过程中的某一时刻状态如下: 有序序列L[1,2.........i-1] L(i)

理科男同学 1328

插入排序(直接插入排序,折半插入排序,2路插入排序,希尔排序)

/* 插入排序:直接插入排序,折半插入排序,2路插入排序,希尔排序 将数据由小到大排列 运行环境:VS2010 */ #include #include #include #define OK 1 #define ERROR 0 #define MAXSIZE 50 typedef struct { int value; }RedType; typedef struct { R

仰望星空 3248

插入排序中直接插入排序,折半插入排序,希尔排序实现过程(数据结构)

插入排序分为直接插入排序,折半插入排序,希尔排序三种。 直接插入排序: 每次插入都是从后面带排序记录中取出第一个,先放入R[0]中暂存(r[0]作为一个临时变量,用于存储要插入的记录),然后从有序表后端向前进行比较,如果数字大于要插入记录的数字就向后移动一位,直到找到一个不大于该数字的记录,将该数字放在其后面的空位。 例:用直接插入排序排序(43,21,89,15,43,28)。 ...

weixin_45901312的博客 516

排序算法3——图解直接插入排序以及折半(二分)插入排序及其实现

一、直接插入的基本思想 将待排序的一组序列分为已排好序和未排好序的两个部分 初始状态时,已排好序序列仅包含第一个元素,未排好序的序列元素为除去第一个以外的n-1个元素 然后,将未排好序序列中的元素逐一插入到已排好序的序列中 如此往复,经过n-1次插入后,未排序序列中的元素个数变为0,排序完成。如下图所示 代码及上下界如图 从代码可以看出,空间复杂度上,简单插入排序仅需要常数个额外空间 在...

优快云_dzh的博客 4285
上一篇: QT快速入门笔记
下一篇: 插入排序-折半插入排序
钱叁壹
博客等级 码龄12年 755粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值