直接插入排序(Straight Insertion Sort)

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

算法介绍

  直接插人排序的工作方式像许多人排序一手扑克牌。开始时,我们的左手为空并且桌子上的牌面向下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较。如图2-1所示,拿在左手上的牌总是排序好的,原来这些牌是桌子上牌堆中顶部的牌。对于少量元素的排序,插入排序是一个有效的算法。

在这里插入图片描述

算法描述

  首先我们将数组中的数据分为两个区间,已排序区间和未排序区间。初始已排序区间只有一个元素,就是数组的第一个元素,然后在未排序区间中依次取出元素并插入到已排序区间的合适位置,并保证已排序区间一直是有序。重复这个步骤直到未排序区间元素为空,排序完成。

动图演示

在这里插入图片描述

算法分析

  时间复杂度:O(N2)

  空间复杂度:O(1)

  稳定性:稳定

代码实现

// C++
void straightInsertionSort(int array[], int length) {
    for (int i = 1; i < length; ++i) {  // 遍历无序序列
        int key = array[i];  // 记录准备插入的元素
        int j = i - 1;  // 记录当前比较位置指针
            
        while (j >= 0 && array[j] > key) {  // 寻找插入位置
            array[j + 1] = array[j];  // 元素后移 
            --j;  // 指针减1,当前比较位置前移
        }
        array[j + 1] = key;  // 插入合适位置
    }
}

参考

算法导论

数据结构与算法分析(Java语言描述)

数据结构(C语言版)

后台管理系统-7-vue3之引入配置文件baseURL mock=false,本地模拟。mock=true,线上模拟。baseURL+url=实际请求的URL。get请求param参数,post请求data参数。 阅读详情

相关推荐

用YOLO11-seg玩转裂缝分割:CBAM注意力魔改+轻量化GhostConv实战

本文详细解析了如何利用YOLO11-seg进行裂缝分割任务,结合CBAM注意力机制和GhostConv轻量化改造,显著提升模型性能。通过实战案例展示从数据准备、模型训练到部署优化的全流程,特别针对小目标检测和复杂背景干扰等挑战提供解决方案,最终实现高效准确的裂缝检测系统。

j0k1l2m3n的博客 287

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

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

qq_44616044的博客 19万+

RouterOS网桥VLAN实战:从零构建安全隔离的二层虚拟网络

本文详细讲解了如何在RouterOS上利用网桥和VLAN功能,从零开始构建安全隔离的二层虚拟网络。通过分步实战演示,涵盖核心概念、网桥创建、PVID设置、VLAN规则配置及安全过滤,帮助网络管理员实现办公、访客与服务器网络的逻辑隔离与灵活管理,提升网络安全性。

u9v0w的博客 504

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

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

超烦豆先森 1万+

AWSIM模拟器 新增多相机

本文介绍了基于Unity6引擎对AWSIM自动驾驶模拟器的优化方案,主要针对多相机系统的扩展实现。作者通过修改EgoVehicle.cs和AutowareSimulationDemo.cs核心代码,将原单相机系统升级为5相机配置。关键技术点包括:1)使用List容器管理多个CameraSensor组件;2)完善相机初始化流程;3)配置5个相机UI显示窗口;4)修改ROS话题设置。优化后的系统可支持BEVFusion等多传感器融合算法的测试验证,为Autoware.universe 0.45.0及以上版本提供

W805698955的博客 831

手把手教你用芯驰X9HP驱动MAX96755/MAX96752点亮智能座舱仪表屏(附完整寄存器配置表)

本文详细介绍了如何使用芯驰X9HP驱动MAX96755/MAX96752实现智能座舱仪表屏的完整开发流程,包括硬件架构解析、关键寄存器配置、Linux BSP集成及调试技巧。通过实战指南和完整寄存器配置表,帮助开发者快速掌握驱动开发核心技术,提升智能座舱系统的显示性能与稳定性。

weixin_30879169的博客 526

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

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

小陈没烦恼 3万+

汇编语言与USB量产工具开发解析

本文解析了汇编语言在USB量产工具开发中的应用。USB量产工具主要用于批量配置USB设备,包括固件烧录、格式化、信息写入等功能。汇编语言在底层硬件操作中发挥关键作用,如直接控制USB寄存器、编写驱动和精确时序控制。文章通过伪代码示例展示了USB控制器初始化和固件烧录流程,并强调硬件依赖性、安全机制和时序精度等注意事项。开发需严格遵循芯片手册,建议优先使用厂商SDK,避免设备损坏风险。

RulesChen的博客 1024

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

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

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

【C++PCL】点云文件读写

本文介绍 PCL 中 PCD 与 PLY 点云文件的读取、保存和字段检查,覆盖 PointXYZI、PointXYZRGB、ASCII、二进制及压缩二进制,并给出 C++11 实操代码与参数调试建议。

weixin_45196569的博客 42

组态王的日历时间控件脚本

日期时间控件中的脚本中在小于10的月份和天数前必须要加上0,这是由首字符对比机制规定的,首字母相同,就不再不做对比了,比如1和11,是一样的。首字母不同,再比较下一位。 float Ayear1; float Amonth1; float Aday1; string temp1; Ayear1=sd.Year; Amonth1=sd.Month; Aday1=sd.Day; temp1=StrFromInt( Ayear1, 10 ); if(Amonth1<10) temp1=temp1+"-0"+

逍遥子的博客 5717

直接插入排序(Straight Insertion Sort)

一、基本思想 直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。 实际中我们玩扑克牌时,就用了插入排序的思想 当我们摸到7这张牌时,怎样插入可以得到新的有序牌组呢? 我们先拿7从后往前依次作比较(之前插的牌已经有序),直到遇到小于等于7的数字(牌5),然后我们将7插入到该数字(牌5)后面,这样我们得到的牌组依然是有序的,这就是我们生活中常见的直接插入排序。 因此简洁来说,插.

Aspect of Twilight的博客 1566

数字IC行业笔试面试全攻略

数字IC行业迎来快速发展,国产替代加速,技术创新活跃,应用领域持续扩展,但人才缺口扩大。职业发展路径清晰,从初级到首席工程师/架构师的技术路线,或转向管理岗位。薪资待遇优厚,应届生起薪25-35W,5-10年经验可达70-110W,架构师年薪超百万。薪资受公司平台、技术方向、学历背景、项目经验和地域因素影响。AI芯片、汽车电子等热门方向溢价明显,成功流片经验尤其重要。

2301_79143213的博客 759

直接插入排序(Straight insertion Sort)

希尔排序的时间复杂度取决于增量序列的间隔大小以及数组的初始排序情况,究竟取什么样的增量最好,至今仍是一个难题,但大量研究数据表明当递增数列d[k]=2的t-k+1的次方-1时(0<=k<=t<=[log(n+1)])时可以取得加不错的效率O(n^3/2)。我们都理解,优秀的排序算法首要的就是速度,在过去人们想了许多办法都无法将算法的速度,算法的时间复杂度都是O(n^2),所以当时的计算机学术界充斥着“排序算法无法突破O(n^2)”的声音。所以,相等元素的相对的前后顺序没有改变,所以插入排序是稳定的。

YeJianjieda的博客 1116

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

排序之直接插入排序(Straight Insertion Sort)

直接插入排序(Straight Insertion Sort)的基本思想:    依次从无序表中取出一个元素,将其插入有序表的合适位置,从而使得有序表依然有序,长度加1,重复操作直至全部记录完成插入为止; 算法操作: 设数组为data[0 , 1 , 2 , ......n - 1]:            1) 初始时, 将data[0]设置为有序区, data[1 , 2 , ....

dangzhileiqaz的专栏 761

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【排序】直接插入排序(Straight Insertion Sort)

直接插入排序(Straight Insertion Sort) 思想:类似于玩扑克牌,插牌,认为第一个数字是有序的,从第二个数字开始,如果比当前数字小,那么该数字就应该插入到左边,依次类推,逐渐插入。注意:插入的时候是从i-1位置向左数,直到找到最后一个大于当前数字的数字,然后插入到前面一个位置即可。 算法复杂度:O(n2)O({n^2})O(n2),性能上略优于冒泡排序和简单选择排序 impor...

heimu24的博客 356

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

直接插入如排序(straight insertion sort)

接下来的几篇博客都是关于排序的;主要有插入类排序;交换类排序;选择类排序; 插入类排序主要有直接插入如排序(straight insertion sort);折半插入排序(bianry insertion sort); Shell sort; 交换类排序主要有冒泡排序(bubble sort); 快速排序(quick sort); 选择类排序主要有;简单选择排序(simple selecti...

qinjiawei_156558的博客 368

图解插入排序——直接插入排序算法(straight insertion sort)

直接插入排序,Straight Insertion Sort,是一种最简单的排序方法,它的基本思想就是把一个记录插入到一个有序的序列中,其基本步骤可以概括为两步:一是取出一个元素,留出空位;二是符合条件的元素右移,把取出的元素插入。那么这样的话,我们就需要一个辅助的变量来临时缓存这个被取出的变量,一般我们把这个辅助变量称之为“哨兵”。...

仅以此博客记录日常学习工作中所思所得,水平有限,难登大雅,万望海涵。 8745

插入排序—直接插入排序(Straight Insertion Sort)

插入排序—直接插入排序(Straight Insertion Sort) 将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。

wgiyq的博客 1343

排序(三)之直接插入排序Straight Insertion Sort

一、直接插入排序的思想:

XHfight的博客 1024

直接插入排序(straight insertion sort)

#include <stdio.h> #define MaxSize 20 typedef int KeyType; typedef char InfoType; typedef struct { KeyType key; InfoType data; }RecType; void InsertSort(RecType R[],int n) { int i,j; RecType tmp; for(i=1;i<n;i++) //循环7次 { tmp=R[i]; //将

weixin_45959708的博客 307
上一篇: 简单选择排序(Simple Selection Sort)
下一篇: 冒泡排序(Bubble Sort)
ali48
博客等级 码龄6年 31粉丝 117原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值