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

排序算法——插入排序

一、插入排序概念

直接插入排序(Insertion Sort)是一种简单的排序算法,它的工作原理类似于人们手动排序卡片的方式。该算法通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

二、插入排序原理

1. 初始化:将数组的第一个元素视为已排序的部分。

2. 遍历:从第二个元素开始,每次选择一个元素,将其插入到已排序部分的适当位置。

3. 比较和移动:为了找到新元素的正确位置,从后向前比较新元素与已排序部分的元素,如果新元素较小,则将较大的元素向后移动一位。

4. 重复:重复上述过程,直到所有元素都被插入到已排序部分。

三、代码示例

#include <stdio.h>void insertionSort(int *arr, int size)
{int key = 0;int i, j;for (i = 1; i < size; i++){key = arr[i];               /*当前待插入的元素*/for (j = i - 1; arr[j] > key && j >= 0; j--)  /*将大于key的元素向后移动一位*/{arr[j + 1] = arr[j];}arr[j + 1] = key;}
}void print(int *arr, int size)
{for (int i = 0; i < size; i++){printf("%d ", arr[i]);}printf("\n");
}int main()
{int arr[] = {5, 4, 2, 3, 1, 6, 0};int size = sizeof(arr) / sizeof(int);printf("插入排序前的数组:");print(arr, size);printf("插入排序后的数组:");insertionSort(arr, size);print(arr, size);return 0;
}

运行结果:

 

四、插入排序复杂度

时间复杂度

最好情况:当输入数组已经是排序好的时候,时间复杂度为O(n)。

平均情况和最坏情况:当输入数组是随机或逆序的时候,时间复杂度为O(n²)。

空间复杂度

直接插入排序是原地排序算法,空间复杂度为O(1)。

相关文章:

排序算法——插入排序

一、插入排序概念 直接插入排序&#xff08;Insertion Sort&#xff09;是一种简单的排序算法&#xff0c;它的工作原理类似于人们手动排序卡片的方式。该算法通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应位置并插…...

重修设计模式-行为型-状态模式

重修设计模式-行为型-状态模式 先了解一下状态机的概念&#xff0c;状态机是软件编程中对一种状态场景的抽象表达&#xff0c;构成状态机三要素是&#xff1a;状态&#xff08;State&#xff09;、事件&#xff08;Event&#xff09;、动作&#xff08;Action&#xff09;&…...

网络安全知识渗透测试

渗透测试是一种模拟网络攻击&#xff0c;用于识别漏洞并制定规避防御措施的策略。及早发现缺陷使安全团队能够修复任何漏洞&#xff0c;从而防止数据泄露&#xff0c;否则可能会造成数十亿美元的损失。笔测试还有助于评估组织的合规性、提高员工对安全协议的认识、评估事件响应…...

我国卫星互联网产业集群崛起;1000万资金扶持 上海助推产业互联网平台跨越式发展;河南“数据要素×”行动实施方案发布 | 产业互联网观察第179期

我国卫星互联网产业集群崛起&#xff1a;千帆星座首批卫星发射成功 8月6日&#xff0c;中国版"星链"项目"千帆星座"&#xff08;G60星链&#xff09;首批18颗组网卫星在太原卫星发射中心成功发射升空。这些卫星采用上海格思航天自主研发的可堆叠型平板卫星…...

《RT-DETR》论文笔记

原文出处 [2304.08069] DETRs Beat YOLOs on Real-time Object Detection (arxiv.org)https://arxiv.org/abs/2304.08069 原文笔记 What DETRs Beat YOLOs on Real-time Object Detection 1、设计了一种高效的混合编码器&#xff0c;通过解耦尺度内交互和跨尺度融合来提高…...

输出Docker容器的启动命令行脚本

当Docker容器启动后&#xff0c;如果忘记启动参数&#xff0c;比如目录挂载、端口映射等&#xff0c;可以通过Portainer等容器管理工具查看。但是&#xff0c;有时希望能获取容器启动的命令行&#xff0c;因为需要再启动一个类似容器&#xff0c;怎么办呢&#xff1f; 有一款工…...

Dubbo 快速掌握 这篇就够了

1. Dubbo概述 Dubbo 是一款高性能、轻量级的开源Java RPC框架&#xff0c;由阿里巴巴公司开发并在2011年开源。它主要用于解决分布式系统中服务之间的通信问题&#xff0c;支持多种协议&#xff0c;如Dubbo、HTTP、Hessian等&#xff0c;具有服务注册、服务发现、负载均衡、故…...

【每日刷题】Day100

【每日刷题】Day100 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 【模板】堆_牛客题霸_牛客网 (nowcoder.com) 2. 【模板】链表_牛客题霸_牛客网 (nowcoder.com) 3…...

网络协议九 应用层 HTTPS

一 什么是 HTTPS 二 什么是 SSL/TLS 协议 &#xff0c;TLS 是 SSL 升级后的名字 三. TLS 协议 工作在那一层 四 。OpenSSL 是 SSL/TLS协议的开源实现。 五。重点 HTTPS 的通讯过程 六 TLS 1.2 的连接过程 1. client hello 是浏览器发送给服务器的第一条信息&#xff0c; 是客户…...

【ArrayList】JDK1.8源码详细注释 以及如何实现线程安全的链表

ArrayList(JDK8) ArrayList有四个内部类&#xff0c;成员内部类Itr&#xff0c;成员内部类ListItr&#xff0c;静态内部类SubList&#xff0c;ArrayListSpliterator&#xff08;暂时用不到&#xff09;Itr是Iterator的实现类&#xff0c;支持正向遍历&#xff0c;ArrayList的i…...

[python]rasterio运行代码警告proj_create_from_database: Cannot find proj.db

这个报错要分原因还有rasterio版本讨论&#xff0c;因此官方给出了十分具体回答 Frequently Asked Questions What does "RasterioIOError: file.ecw not recognized as a supported file format." mean? This exception is raised when none of rasterios format …...

ThinkPHP5.1.C+CmsEasy-SQL注入

目录 1、ThinkPHP 中存在的 SQL注入 漏洞&#xff08; select 方法注入&#xff09; 1.1环境配置 1.1.1将 composer.json 文件的 require 字段设置成如下&#xff1a; 1.1.2设置application/index/controller/Index.php 文件 1.1.3在 application/database.php 文件中配置…...

Python 绘图进阶之词云图:文本数据的可视化艺术

Python 绘图进阶之词云图&#xff1a;文本数据的可视化艺术 引言 在数据科学和自然语言处理领域&#xff0c;词云图&#xff08;Word Cloud&#xff09;是一种常用的可视化工具。它通过直观的图形展示文本数据中的高频词汇&#xff0c;使得我们能够快速抓住文本内容的核心主题…...

【Windows】Q-Dir(资源管理器)软件介绍

软件介绍 Q-Dir是一款免费的文件管理器软件&#xff0c;它可以让您更方便地浏览和管理计算机上的文件和文件夹。与Windows自带的资源管理器相比&#xff0c;Q-Dir具有更多的功能和选项。 安装教程 软件下载完成&#xff0c;解压软件。 点击Q-Dir.exe即可打开软件。 功能…...

什么是令牌桶算法?工作原理是什么?使用它有哪些优点和注意事项?

大家好&#xff0c;我是鸭鸭&#xff01; 此答案节选自鸭鸭最近弄的面试刷题神器面试鸭 &#xff0c;更多大厂常问面试题&#xff0c;可以点击下面的小程序进行阅读哈&#xff01; 目前这个面试刷题小程序刚出&#xff0c;有网页和小程序双端可以使用&#xff01; 回归面试题…...

C++-类与对象(中上篇)

一、目标 1. 类的 6 个默认成员函数 2. 构造函数 3. 析构函数 二、对目标的介绍 1. 类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生…...

链表 206.反转链表

一般方法 不需要一个个来回换&#xff0c;只需要改变链表的指向&#xff0c;即可完成 一个链表的头节点&#xff0c;也代表了整个链表 class Solution {public ListNode reverseList(ListNode head) {ListNode temp;ListNode cur head;ListNode pre null;while(cur ! null…...

Ubuntu18.04 配置EtherCAT主站IGH SOEM

IGH IGH 是开源的EtherCAT 主站软件 一、安装依赖 sudo apt update sudo apt install build-essential linux-headers-$(uname -r) mercurial autoconf libtool 也不知道安装的完全不完全 uname -r 可以查看内核&#xff0c;我安装的ubuntu18.04的内核版本是 5.4.0-84-gen…...

航空航天构型管理

构型管理(CM)被定义为在产品的生命周期中应用的SE技术和管理规程。CM的五个原则是&#xff1a;CM计划与执行、配置识别、配置变更和差异控制、配置状态核算和配置验证。 广义上的构型管理规划和管理是有效实施配置管理的关键。特别是在不同项目之间的差异中&#xff0c;构型管理…...

Visual Studio Code 安装与 C/C++ 语言运行总结

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言&#xff1a; Visual Studio Code&#xff08;简称 VS Code&#xff09;是由微软开发的一款轻量级、强大的代码编辑器&#xff0c;支持多种编程语言和开发框架。由于其丰富的插件生态系统和灵活的配置选项&#xff0c;VS…...

AI Agent(智能体)的输出格式应该从 Markdown 转向 HTML吗?

在近期&#xff08;2026年5月&#xff09;的技术圈和AI社区引发了非常热烈的讨论。提出这个观点的是 Anthropic&#xff08;Claude背后的公司&#xff09;负责 Claude Code 团队的工程师 Thariq Shihipar&#xff0c;他最近发表了一篇题为《使用 Claude Code&#xff1a;HTML 极…...

3分钟零部署:在浏览器中畅玩开源三国杀网页版

3分钟零部署&#xff1a;在浏览器中畅玩开源三国杀网页版 【免费下载链接】noname 项目地址: https://gitcode.com/GitHub_Trending/no/noname 还在为找不到合适的桌游伙伴而烦恼&#xff1f;想随时随地体验三国杀策略对决的乐趣&#xff1f;开源三国杀网页版为你提供了…...

反射式红外光电管ITR9909:从基础测试到智能车竞赛应用实战

1. ITR9909反射式红外光电管基础入门 第一次拿到ITR9909这个小家伙时&#xff0c;我差点被它朴素的外表骗了。这个直径不到5mm的黑色塑料封装器件&#xff0c;看起来就像普通的三极管&#xff0c;但它的能力可不容小觑。作为智能车竞赛的老玩家&#xff0c;我发现它在信标检测…...

UI-TARS-Desktop 深度解析 —— 字节开源多模态 GUI 智能体的技术与应用

“用自然语言控制电脑” 曾是科幻电影中的场景&#xff0c;如今正通过多模态 AI 智能体成为现实。字节跳动开源的 UI-TARS-Desktop 项目&#xff0c;凭借其强大的 GUI 交互能力&#xff0c;让 AI 能够像真人一样操作电脑桌面、浏览器与应用程序。用户只需输入 “帮我打开浏览器…...

终极低光照图像数据集ExDark:从实战应用到最新研究进展

终极低光照图像数据集ExDark&#xff1a;从实战应用到最新研究进展 【免费下载链接】Exclusively-Dark-Image-Dataset Exclusively Dark (ExDARK) dataset which to the best of our knowledge, is the largest collection of low-light images taken in very low-light enviro…...

AI辅助故事创作:从工具链构建到人机协同写作实践

1. 项目概述&#xff1a;当AI成为你的专属故事创作伙伴最近在折腾一个挺有意思的项目&#xff0c;我把它叫做“盐的故事”&#xff08;Salt-Story&#xff09;。这名字听起来有点玄乎&#xff0c;其实内核很简单&#xff1a;一个专门用来辅助故事创作的AI工具链。我自己是个业余…...

保姆级教程:用海思Hi3516EV200的himm命令手动切换IRCUT滤镜(附完整Shell脚本)

海思Hi3516EV200开发板实战&#xff1a;手把手教你用himm命令驱动IRCUT滤镜 在嵌入式视觉项目中&#xff0c;红外截止滤镜&#xff08;IRCUT&#xff09;的精准控制往往是决定夜间成像质量的关键。对于使用海思Hi3516EV200开发板的开发者来说&#xff0c;官方文档对GPIO底层操…...

3分钟掌握清华PPT模板:免费打造专业学术演示文稿的终极方案

3分钟掌握清华PPT模板&#xff1a;免费打造专业学术演示文稿的终极方案 【免费下载链接】THU-PPT-Theme 清华主题PPT模板 项目地址: https://gitcode.com/gh_mirrors/th/THU-PPT-Theme 还在为学术汇报、毕业答辩或重要演讲的PPT设计而头疼吗&#xff1f;清华大学视觉设计…...

告别软件模拟!用GD32F303的硬件I2C0高效读写EEPROM(附小熊派工程源码)

深入解析GD32F303硬件I2C驱动EEPROM的工程实践 在嵌入式系统开发中&#xff0c;非易失性存储是保存配置参数、运行日志等关键数据的必备功能。传统软件模拟I2C虽然实现简单&#xff0c;但在通信效率和系统资源占用方面存在明显瓶颈。本文将基于GD32F303的硬件I2C0控制器&#x…...

告别枯燥理论!用eNSP模拟一次家庭/小型办公室无线组网:从AC配置、AP上线到手机连接全流程

告别枯燥理论&#xff01;用eNSP模拟一次家庭/小型办公室无线组网&#xff1a;从AC配置、AP上线到手机连接全流程 想象一下这样的场景&#xff1a;周末在家办公时&#xff0c;手机突然提示"Wi-Fi信号弱"&#xff1b;小型会议室里&#xff0c;同事们抱怨视频会议卡顿。…...