排序与算法:插入排序
执行效果
插入排序的执行效果是这样的:

呃……看不懂吗?没关系,接着往下看介绍
![]()
算法介绍
插入排序(Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用原地排序(即只需用到 O(1) 的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
如果对插入排序的效率不是很满意,还可以看下它的改进版:希尔排序。
算法档案
时间复杂度:O(n2)
最优时间复杂度:O(n)
平均时间复杂度:O(n2)
空间复杂度:总共 O(n),需要辅助空间 O(1)
稳定性:稳定
算法步骤
从第一个元素开始,该元素可以认为已经被排序
- 取出下一个元素,在已经排序的元素序列中从后向前扫描
- 如果该元素(已排序)大于新元素,将该元素移到下一位置
- 重复步骤 3,直到找到已排序的元素小于或者等于新元素的位置
- 将新元素插入到该位置后
- 重复步骤 2~5,直到所有元素排序完毕

算法实现
#include <stdio.h>void insertion_sort(int array[], int length);void insertion_sort(int array[], int length){int i, j, temp;for (i = 1; i < length; i++){temp = array[zxsq-anti-bbcode-i];j = i - 1;for ( ; j >= 0 && array[zxsq-anti-bbcode-j] > temp; j--){array[j+1] = array[zxsq-anti-bbcode-j];}array[j+1] = temp;}
}int main(void)
{int array[] = {73, 108, 111, 118, 101, 70, 105, 115, 104, 67, 46, 99, 111, 109};int i, length;length = sizeof(array) / sizeof(array[zxsq-anti-bbcode-0]);insertion_sort(array, length);printf("排序后的结果是:");for (i = 0; i < length; i++){printf("%d ", array[zxsq-anti-bbcode-i]);}putchar('\n');return 0;
}
程序实现如下:
![]()
相关文章:
排序与算法:插入排序
执行效果 插入排序的执行效果是这样的: 呃……看不懂吗?没关系,接着往下看介绍 算法介绍 插入排序(Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,…...
HashMap 详解
一、核心特性 HashMap集合的key是无序不可重复的。 ①无序:插入顺序和取出顺序不一定相同。 ②不可重复:key具有唯一性。 向HashMap集合中put时,key如果重复的话,value会覆盖。 二、HashMap集合的key具有唯一性,向ke…...
DAY07 Collection、Iterator、泛型、数据结构
学习目标 能够说出集合与数组的区别数组:1.是引用数据类型的一种2.可以存储多个元素3.数组的长度是固定的 int[] arr1 new int[10]; int[] arr2 {1,2,3};4.数组即可以存储基本类型的数据,又可以存储引用数据类型的数据int[],double[],String[],Student[]集合:1.是引用数据类…...
计算机网络之物理层——基于《计算机网络》谢希仁第八版
(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍快上🚘,一起学习,让我们成为一个强大的攻城狮࿰…...
简讯:Rust 2024 edition and v1.85.0 已发布
详见 https://blog.rust-lang.org/2025/02/20/Rust-1.85.0.html 升级方法:rustup update stable...
DeepSeek写俄罗斯方块手机小游戏
DeepSeek写俄罗斯方块手机小游戏 提问 根据提的要求,让DeepSeek整理的需求,进行提问,内容如下: 请生成一个包含以下功能的可运行移动端俄罗斯方块H5文件: 核心功能要求 原生JavaScript实现,适配手机屏幕 …...
uniapp中引入Vant Weapp的保姆级教学(包含错误处理)
废话不多说,直接上方法,网上的教学好多都是错误的 1.安装vant weapp 在Hbuilder的终端,输入以下代码 npm install vant/weapp -S --production 2.新建wxcomponents文件夹 在项目的跟目录新建一个“wxcomponents’文件夹,与app.…...
【Python爬虫(20)】解锁Python爬虫数据存储秘籍:文件存储全攻略
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取ÿ…...
关于Unity的一些基础知识点汇总
1.Prefab实例化后,哪些资源是共用的?哪些资源是拷贝的? 共用资源 脚本组件:实例化后的 Prefab 共享脚本组件的代码。若脚本中无状态数据,多个实例对脚本方法的调用会有相同逻辑。比如一个控制物体移动的脚本࿰…...
SpringCould+vue3项目的后台用户管理的CURD【Taurus教育平台】
文章目录 一.SpringCouldvue3项目的后台用户管理的CURD【Taurus教育平台】 1.1 背景 二.用户列表(分页查询) 2.1 前端Vue3 (Vue3-Element-Admin)2.2 后端SpringCould 处理 三. 用户信息删除 3.1 前端Vue3 (Vue3-Eleme…...
功能说明并准备静态结构
功能说明并准备静态结构 <template><div class"card-container"><!-- 搜索区域 --><div class"search-container"><span class"search-label">车牌号码:</span><el-input clearable placeho…...
solidity之Foundry安装配置(一)
一门面向合约的高级编程语言,主要用来编写以太坊只能合约。 Solidity受C语言,Python和js影响,但为编译成为以太坊虚拟机字节码在EVM上执行,很多特性和限制都和EVM相关。 Solidity 是静态类型语言,支持继承、库、自定义…...
请解释 Vue 中的生命周期钩子,不同阶段触发的钩子函数及其用途是什么?
vue生命周期钩子详解(Vue 3版本) 一、生命周期阶段划分 Vue组件的生命周期可分为四大阶段,每个阶段对应特定钩子函数: 创建阶段:初始化实例并准备数据挂载阶段:将虚拟DOM渲染为真实DOM更新阶段ÿ…...
C#上位机--选择语句(switch)
在 C# 上位机开发的广阔领域中,流程控制语句如同程序的 “交通枢纽”,精准地引导着程序的执行路径。继深入探讨if语句后,我们将目光聚焦于另一个重要的流程控制语句 ——switch语句。switch语句以其独特的多路分支结构,为处理多条…...
Hadoop初体验
一、HDFS初体验 1. shell命令操作 hadoop fs -mkdir /itcast hadoop fs -put zookeeper.out /itcast hadoop fs -ls / 2. Web UI页面操作 结论: HDFS本质就是一个文件系统有目录树结构 和Linux类似,分文件、文件夹为什么上传一个小文件也这…...
在vue2中操作数组,如何保证其视图的响应式
在 Vue 2 中,操作数组时需要注意一些方法不会触发视图的响应式更新。为了确保数组的操作是响应式的,可以使用 Vue 提供的响应式方法。以下是一些常见的操作及其替代方法: 使用 Vue.set 方法: 当你需要通过索引直接修改数组中的某个…...
CentOS的ssh复制文件
1.前提 首先要已经连接上了对方的ssh 2.命令 scp [文件] 目标IP:目标路径 例如: $PWD是一个环境变量,可以获取当前绝对目录,ssh上传的时候一定要确保对方有这个目录才行,不然会报错 3.递归上传 scp -r 目录 目标IP:路径 可以…...
Spring Cloud — Hystrix 服务隔离、请求缓存及合并
Hystrix 的核心是提供服务容错保护,防止任何单一依赖耗尽整个容器的全部用户线程。使用舱壁隔离模式,对资源或失败单元进行隔离,避免一个服务的失效导致整个系统垮掉(雪崩效应)。 1 Hystrix监控 Hystrix 提供了对服务…...
Vmware虚拟机Ubantu安装Docker、k8s、kuboard
准备工作: 切换用户:su root关闭防火墙: sudo ufw diasble关闭swap: systemctl stop swap.target systemctl status swap.target systemctl disable swap.target #开机禁用 systemctl stop swap.img.swap systemctl status swap.img.swap关闭虚拟交换分区 vim /…...
PHP建立MySQL持久化连接(长连接)及mysql与mysqli扩展的区别
如果在 PHP 5.3 的版本以前想要创建MySQL的持久化连接(长连接),需要显式调用 pconnect 创建: $con mysql_pconnect($server[host], $server[username], $server[password]); if (!($con false)) { if (mysql_select_db($server[database], $con) fals…...
嵌入式C程序员最后的护城河:当大模型开始生成驱动代码,这7个不可绕过的硬件感知编程范式决定你是否会被淘汰?
第一章:嵌入式C程序员的终极价值重定义在资源受限、实时性严苛、安全边界模糊的现代嵌入式系统中,C语言程序员早已超越“写驱动”或“调寄存器”的工具人角色。其核心价值正从语法执行者升维为系统可信边界的架构师、硬件语义的翻译官与全生命周期风险的…...
从快递路线规划到电路板布线:欧拉图在实际开发中的两种应用场景与代码实战
从快递路线规划到电路板布线:欧拉图在实际开发中的两种应用场景与代码实战 快递员老张每天清晨6点准时出现在物流站点,他的三轮车上堆满了待派送的包裹。过去两年里,他总要在同一条街道上来回穿梭,有时甚至因为漏掉某个小巷而不得…...
Java面试线程与锁,尸横遍野!
再谈多线程在我们的操作系统之上,可以同时运行很多个进程,并且每个进程之间相互隔离互不干扰。我们的CPU会通过时间片轮转算法,为每一个进程分配时间片,并在时间片使用结束后切换下一个进程继续执行,通过这种方式来实现…...
5分钟极速上手:Revelation光影包带你体验Minecraft电影级画质
5分钟极速上手:Revelation光影包带你体验Minecraft电影级画质 【免费下载链接】Revelation An explorative shaderpack for Minecraft: Java Edition 项目地址: https://gitcode.com/gh_mirrors/re/Revelation Revelation光影包是一款基于物理渲染的高性能Mi…...
VibeVoice-Realtime-0.5B部署教程:server.log日志排查常见问题
VibeVoice-Realtime-0.5B部署教程:server.log日志排查常见问题 你是不是也遇到过这种情况:兴冲冲地部署好一个AI应用,启动脚本一跑,终端上显示“服务启动成功”,但打开浏览器一看,页面死活加载不出来&…...
不装了!库克公开认错:14 年前硬推苹果地图,是首个重大决策失误
4 月 22 日,即将在 9 月卸任 CEO 的库克,在苹果内部全员大会上罕见复盘职业生涯,亲口承认:2012 年苹果地图的上线,是他执掌苹果以来首个真正重大的错误。这场“自我揭短”,发生在库克交接权力、回顾 15 年得…...
从URDF到Rviz可视化:手把手教你用joint_state_publisher_gui调试机器人模型(ROS Noetic/Melodic)
从URDF到Rviz可视化:手把手教你用joint_state_publisher_gui调试机器人模型(ROS Noetic/Melodic) 在机器人开发过程中,URDF(Unified Robot Description Format)文件是描述机器人物理结构的重要工具。然而&…...
Arthas进阶技巧:用classloader和dump命令破解类加载难题
Arthas进阶技巧:用classloader和dump命令破解类加载难题 在Java应用的开发和运维过程中,类加载问题就像是一个难以捉摸的幽灵,总是在最意想不到的时刻出现。你是否遇到过这样的场景:明明类路径配置正确,却抛出ClassNot…...
工业级YOLO检测数据处理:C#上位机存储+报表导出全方案(含SQLite+Excel+PDF+7×24小时稳定运行)
摘要 在工业视觉检测系统中,YOLO模型的推理性能只是基础,检测结果的可靠存储、规范管理与标准化报表导出才是决定系统能否真正落地的关键。很多项目只关注模型精度,却因数据处理方案简陋导致数据丢失、追溯困难、报表不规范等问题,最终无法通过企业验收。 本文基于C# Win…...
别再只用jstack了!JDK自带的JMC(Java Mission Control)实战:5分钟搞定线上应用性能监控与JFR分析
别再只用jstack了!JDK自带的JMC实战:5分钟搞定线上性能监控与JFR分析 当线上Java应用突然出现CPU飙高、内存泄漏或频繁GC时,大多数开发者的第一反应是打开终端输入jstack。但面对生产环境复杂的性能问题,仅靠线程快照就像用听诊器…...
