插入排序(C++)
算法思想:插入排序的工作原理是通过构建有序序列,对于未排序的数据,在已排序的序列中从后向前扫描,找到相应的位置并插入。插入排序在实现上,通常采用in-place排序,因而在从后向前扫描的过程中,需要反复把已排序的元素逐步向后挪位,为最新的元素提供插入空间。
插入排序是在一个已经有序的小序列的基础上,一次插入一个元素。
当然,刚开始这个有序的小序列只有1个元素,就是第一个元素。比较是从有序序列的末尾开始,也就是想要插入的元素和已经有序的最大者开始比起,如果比它大则直接插入在其后面,否则一直往前找直到找到它该插入的位置。
如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定的。
平均时间复杂度: O(n * n)
最好情况: O(n)
最坏情况:O(n * n)
排序方式:原地排序
稳定性:稳定
空间复杂度: O(1)
算法步骤:
- 从第一个元素开始,该元素可以认为已经被排序;
- 取出下一个元素,在已经排序的元素序列中从后向前扫描;
- 如果该元素(已排序)大于新元素,将该元素移到下一位置;
- 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
- 将新元素插入到该位置后;
- 重复步骤2~5。
代码实现:
#include <iostream>
#include <vector>
using namespace std;void printVector(vector<int>& nums, int len, int i)
{cout << "step" << i << ": ";for (auto num : nums){cout << num << " ";}cout << endl;
}void insertionSort(vector<int>& nums, int len)
{for (int i = 1; i < len; ++i){if (nums[i] < nums[i - 1]) //若第i个元素小于第i-1个元素,移动有序表后插入{int j = i - 1;int x = nums[i]; //待排序元素while (j >= 0 && x < nums[j]) //要保证j>=0,因为nums[j]要合法{nums[j + 1] = nums[j];--j; //元素后移}nums[j + 1] = x; //插入到正确位置}//若第i个元素大于i-1元素,直接插入printVector(nums, len, i); //打印每趟排序的结果}
}int main()
{vector<int> nums = { 8,7,1,4,2,3,6,9,5, };int len = nums.size();insertionSort(nums, len);system("pause"); //按任意键继续return 0;
}
相关文章:
【QT进阶】Qt Web混合编程之html、 js的简单交互
往期回顾 【QT进阶】Qt Web混合编程之VS2019 CEF的编译与使用(图文并茂超详细介绍)-CSDN博客【QT进阶】Qt Web混合编程之QWebEngineView基本用法-CSDN博客【QT进阶】Qt Web混合编程之CMake VS2019编译并使用QCefView(图文并茂超详细版本&…...
12.MySQL应用架构演变
MySQL应用架构演变 1.总览 单机单库主从架构分库分表云数据库 2.单机单库 介绍 一个简单的小型网站或者应用背后的架构可以非常简单,数据存储只需要一个MySQL Instance就能满足数据读取和写入需求(这里忽略掉了数据备份的实例)ÿ…...
潜藏10年的恶意软件被发现;利用漏洞在K8S上挖矿;AWS、Google和Azure 出现信息泄露危机 | 安全周报0419
关键词:OfflRouter、恶意软件、VBA宏病毒、机密文件、可执行文件、iOS间谍软件、LightSpy、F_Warehouse、Azure CLI、AWS CLI、Google Cloud CLI 1. 近十年来,OfflRouter恶意软件在乌克兰一直未被发现 自2015年以来,部分乌克兰政府网络一直…...
Cesium之home键开关及相机位置设置
显隐控制 设置代码中的homeButton var TDT_IMG_C "https://{s}.tianditu.gov.cn/img_c/wmts?servicewmts&requestGetTile&version1.0.0" "&LAYERimg&tileMatrixSetc&TileMatrix{TileMatrix}&TileRow{TileRow}&TileCol{TileCol}…...
上位机图像处理和嵌入式模块部署(树莓派4b实现固件主流程)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 软件开发一般有软件需求、架构设计和详细设计、软件测试这四个部分。软件需求和软件测试都比较好理解,前者是说要实现哪些功能…...
DBA面试(ORACLE ADG篇)
一、在Oracle的DG中,RFS、LNSn、MRP、LSP进程的作用分别是什么? 1.RFS进程 RFS(Remote File Server)进程主要用来接受从主库传送过来的日志信息。对于物理备库而言,RFS进程可以直接将日志写进Standby Redo logs&…...
插入排序(C++)
算法思想:插入排序的工作原理是通过构建有序序列,对于未排序的数据,在已排序的序列中从后向前扫描,找到相应的位置并插入。插入排序在实现上,通常采用in-place排序,因而在从后向前扫描的过程中,…...
服务端(三) node.js 主要的核心模块
// 核心模块,是node中自带的模块,可以在node中直接使用 // window 是浏览器的宿主对象,node中是没有的 // global 是node中的全局对象,作用类似于window // ES标准下,全局对象的标准名应该是 globalThis /* 核心模块…...
Libtorch的安装与介绍
1.背景众所周知,现在提到深度学习就离不开PyTorch。但其实PyTorch从更广泛的意义上来说,也只是Torch的Python接口而已。只是大家现在都习惯用Python写代码,所以PyTorch比较火。但是不要忘了Torch其实还有C的接口,名字叫libtorch。…...
二叉树(堆)
目录一、什么是堆?二、堆的实现2.1 结构体变量的声明2.2 堆的初始化2.3 堆的销毁2.4 插入数据2.5 删除数据2.6 堆内有效数据的数目2.7 取堆顶元素2.8 判断堆是否为空2.9 代码汇总三、经典“TopK”问题一、什么是堆? heap 是一个抽象的数据结构ÿ…...
从矩阵理论角度理解偏最小二乘回归,以及在脑科学中(脑影像与行为、基因表达的关系)的应用举例
偏最小二乘法 (PLS) 是一种多元数据驱动的统计技术,旨在提取表示最大大脑行为关联的潜在变量(或潜在成分 latent components [LC])。 从矩阵理论角度理解偏最小二乘回归,以及在脑科学中(脑影像与行为、基因表达的关系)的应用举例 矩阵理论角度理解偏最小二乘回归偏最小二…...
dp 就 dp ,数位dp是什么意思 ?
💧 dp 就 dp ,数位dp是什么意思 ?💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客🎐 🐳 数据结构与算法专栏的文章图文并茂🦕生动…...
MySQL面试必看
1.MySQL中的索引用的是什么数据结构 Innodb使用B树数据结构 1.Hash表:等值查询效率比较高、但是不支持范围查询。 2.二叉树:时间复杂度log2n 缺点:有可能产生不平衡 类似于链表的结构 时间复杂度为o(n)。 3.平衡二叉树avl/红黑树:…...
2023年全国最新道路运输从业人员精选真题及答案34
百分百题库提供道路运输安全员考试试题、道路运输从业人员考试预测题、道路安全员考试真题、道路运输从业人员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 28.根据《放射性物品运输安全管理条例》规定,运输放…...
python -- 科研论文海洋气象科学绘图的配色汇总
海洋气象科学科研绘图中常用的配色[1、ColorBrewer 彩色地图,默认情况下包含在 matplotlib 中](https://colorbrewer2.org/#typesequential&schemeBuGn&n3)[2、proplot package 自带的色系](https://proplot.readthedocs.io/en/latest/colormaps.html#ug-pe…...
Prometheus监控实战系列二: 安装部署
Prometheus支持多种操作系统,例如Linux、Windows和Max OSX等。在产品官网上提供了独立的二进制文件进行下载,可下载对应的tar包并在相应系统的服务器上进行安装部署。当然,做为与容器有着紧密联系的监控系统,Promethesu也可以很方…...
欧莱雅校招负责人张泽宇:拥抱Z世代,探索新玩法
作为校招HR,你在雇主品牌创新实践的路上做过什么尝试? 2020年,欧莱雅正式推出了全新的雇主品牌价值主张 —— 敢为敢超越,就是欧莱雅(Freedom to go beyond, thats the beauty of L’ORAL),鼓励…...
安装python教程并解决Python安装完没有Scripts文件夹问题
安装python教程 并解决Python安装完没有Scripts文件夹问题 ** 一背景 **首先要了解这个出现的原因是下载安装的版本问题 系統是32 bit 的版本还是 64bit 的 web-based: 透过网络安装的,就是执行安装后才透过网络下载python executable: 可執行文件的ÿ…...
牛客论坛项目总结
目录 1.请简要介绍一下你的项目? 1.如何实现项目的注册问题 2.项目如何实现用户唯一性检验 3.登录状态保存在哪 4.用户登陆上之后怎么显示登录页面 5.拦截器(Interceptor) 6.ThreadLocal(线程安全) 7.md5原理知…...
【Python学习笔记】b站@同济子豪兄 用pytorch搭建全连接神经网络,对Fashion-MNIST数据集中的时尚物品进行分类
【Python学习笔记】原作b站同济子豪兄 用pytorch搭建全连接神经网络,对Fashion-MNIST数据集中的时尚物品进行分类 跟着b站同济子豪兄的视频自学写的代码,内容是用pytorch搭建全连接神经网络,对Fashion-MNIST数据集中的时尚物品进行分类 视频…...
2年功能测试月薪9.5K,100多天自学自动化,跳槽涨薪4k后我的路还很长...
前言 其实最开始我并不是互联网从业者,是经历了一场六个月的培训才入的行,这个经历仿佛就是一个遮羞布,不能让任何人知道,就算有面试的时候被问到你是不是被培训的,我还是不能承认这段历史。我是为了生存,…...
【IoT 毕业设计】Ruff硬件+阿里云IoT+微信小程序构建环境监控系统
0.技术架构 IoT 物联网毕业设计实战采用 Ruff 开发板,串口连接温湿度传感器DHT11和空气质量传感器SDS011,每5分钟采集一次数据,通过MQTT协议发送到阿里云 IoT 物联网平台,写入云端的设备影子中。微信小程序调用阿里云函数计算FC…...
【VUE3】计算属性及其缓存特性
计算属性 基础示例 模板中的表达式虽然方便,但也只能用来做简单的操作。如果在模板中写太多逻辑,会让模板变得臃肿,难以维护。比如说,我们有这样一个包含嵌套数组的对象: const author reactive({name: John Doe,b…...
【计算机网络】从输入网址到网页显示,期间发生了什么?
【计算机网络】从输入网址到网页显示,期间发生了什么? 接下来以下图较简单的网络拓扑模型作为例子,探究探究其间发生了什么? 文章目录【计算机网络】从输入网址到网页显示,期间发生了什么?一:孤…...
【vue2】近期bug收集与整理01
🥳博 主:初映CY的前说(前端领域) 🌞个人信条:想要变成得到,中间还有做到! 🤘本文核心:记录博主在vue2中遇到过的坑,本文是博主的学习使用总结 目录 1登陆token的问…...
JSON和AJAX
JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。JSON采用完全独立于语言的文本格式,而且很多语言都提供了对json的支持(包括C,C,C#,Java,JavaScript…...
Python入门到精通【精品】第六章 - 函数
Python入门到精通【精品】第六章 - 函数 1. 如何理解函数2. 函数的定义3. 函数的使用3.1. 函数的调用3.2. 实参与形参3.3. 函数的返回3.4. 完整的函数设计3.5. 位置参数和关键参数1. 如何理解函数 当你第一次接触到“函数”这个概念的时候,你肯定会不由自主的联想到数学里面也…...
春招大盘点:找工作除了招聘网站还有哪些渠道?
又是一年毕业季,估计同学们都正在写论文、找工作两头忙,很多同学和小C“诉苦”说现在找实习的渠道太少了,招聘网站都刷完了,也没看到很合适的岗位。那找工作除了招聘网站还有什么渠道呢?其实是有的,今天就为…...
雷电4模拟器安装xposed框架(2022年)
别问我都2202年了为什么还在用雷电4安卓7。我特么哪知道Xposed的相关资料这么难找啊,只能搜到一些老旧的资料,尝试在老旧的平台上实现了。 最初的Xposed框架现在已经停止更新了,只支持到安卓8。如果要在更高版本的安卓系统上使用Xposed得看看…...
Gartner发布CNAPP市场指南 腾讯云为国内唯一入选云厂商
近日,国际研究机构Gartner发布《Market Guide for Cloud-Native Application Protection Platforms》(《云原生应用保护平台(CNAPP)市场指南》)(以下简称《市场指南》),腾讯云凭借集…...
数字藏品应用场景分析
数字藏品应用场景广泛,个人资料图片(PFP)元宇宙、艺术收藏、游戏、体育、文物、音乐等等都可以上链,以数字藏品的形式发行。国际市场中,个人资料图片占大多数,国内多以艺术收藏、文物藏品等为主。 数字藏品…...
spring boot项目:实现与数据库的连接
步骤【写在前面】定义数据库连接信息:引入数据库驱动:创建数据源:创建JdbcTemplate:编写DAO层:使用Service注解标注Service层:使用RestController注解标注Controller层:示例代码:app…...
解析vue中的process.env
一、介绍 1、process process是 nodejs 下的一个全局变量,它存储着 nodejs 中进程有关的信息。 2、process.env env 是 environment 的简称,process.env属性返回一个包含用户环境的对象。 3、dotenv Dotenv 是一个零依赖的模块,它能将环境变…...
ESP32 开启 Wi-Fi 热点与手机端 Iperf 测试 APP 来测试 ESP32 Wi-Fi AP 速率的流程
# 测试需求: ESP32 开启 WiFi AP Server 模式手机连接 ESP32 WiFi AP 热点通过手机端 Iperf 测试 APP 测试 ESP32 WiFi 热点的 Iperf 速率 测试用例: 可以基于 “esp-idf/examples/wifi/iperf” 例程进行测试。ESP32 设备下载 Iperf 例程后࿰…...
msfconsole之制作windows木马并成功获取shell
msfconsole之制作windows木马并成功获取shell 一、工具简介 msfconsole 简称 msf 是一款常用的安全测试工具,包含了常见的漏洞利用模块和生成各种木马,其提供了一个一体化的集中控制台,通过msfconsole,你可以访问和使用所…...
【小杨带你玩转C语言】(入门篇)初识C语言(下)
本章目录 每篇前言1.导语 2.目标 3.知识点 一,常见关键字 1,认识关键字 2,关键字分类 2.1,数据类型关键字 2.1.1,基本数据类型关键字 2.…...
一文快速回顾 Java 操作数据库的方式-JDBC
前言 数据库的重要性不言而喻,不管是什么系统,什么应用软件,也不管它们是 Windows 上的应用程序,还是 Web 应用程序,存储(持久化)和查询(检索)数据都是核心的功能。 大…...
92年程序员发帖晒薪资称自己很迷茫,网友:老弟你可以了
当下,是一个“向钱看,向厚赚”的社会。快节奏的生活下,家庭、工作各方面压力很容易使年轻人陷入迷茫和焦虑。 与其他行业相比,程序员的高薪让人羡慕。那么,对于那些真正达到这么多收入的人来说,他们是怎么…...
太敢说了,编程如果这么自学,培训班都得倒闭,直接省去上万元的学费
写了20多年的代码,之前做过阿里的高级架构师,在技术这条路上跌跌撞撞了很多,我今天分享一些我个人的自学方法给各位。现在在网上报个正经点的班得花几千块钱,线下就更夸张,都是万元起步,我的这些学习方法如果你能用好&…...
别急着给中国版ChatGPT唱赞歌:“追风者”无缘“星辰大海”
文心一言发布十余天后,争论仍未有止歇的迹象。 有人给出了“拉垮”的评价,相比于多轮迭代的ChatGPT,文心一言在逻辑推理、多轮对话等方面的表现不尽如人意;也有人认为给文心一言值得肯定,原因是填补了中文互联网的空白…...
异常:Error和Exception
异常机制(Exception) 什么是异常 实际工作中,遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求、你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,…...
Python满屏表白代码
目录 前言 爱心界面 无限弹窗 前言 人生苦短,我用Python!又是新的一周啦,本期博主给大家带来了一个全新的作品:满屏表白代码,无限弹窗版!快快收藏起来送给她吧~ 爱心界面 def Heart(): roottk.Tk…...
Unity --- Transform类
1.一个很有意思的事实是Transform类不仅用来管理游戏物体的位置缩放旋转,还用来管理游戏物体的父物体与子物体之间的关系 当游戏物体A的trasnform类a是游戏物体B的transform类b的父类的话,游戏物体A就是游戏物体B的父物体 2.如何访问脚本当前挂载的游戏…...
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found
Bug描述 今天主要解决一个 Bug:libstdc.so.6: version GLIBCXX_3.4.29 not found 主要是和 libstc版本问题相关,找了很多方法,其他很多方法都是直接修改libstc.so的版本,但是直接修改这种可能被多个共享库依赖的库版本将会牵一发…...
Unity IL2CPP 游戏分析入门
一、目标 很多时候App加密本身并不难,难得是他用了一套新玩意,天生自带加密光环。例如PC时代的VB,直接ida的话,汇编代码能把你看懵。 但是要是搞明白了他的玩法,VB Decompiler一上,那妥妥的就是源码。 U…...
设置鼠标右键打开方式,添加IDEA的打开方式
一、问题描述 已下载IDEA,但是右键打开之前保存的项目文件,无法显示以IDEA方式打开。 二、解决步骤 1. 打开注册表 winR键输入regedit 2、查找路径为计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell (我找了半天没看到Class…...
手机(Android)刷NetHunter安装指南,无需ssh执行kali命令, NetHunter支持的无线网卡列表!
一、安装NetHunter 前提:确保手机已经root,已装上magisk。如果没有root,可用尝试magisk root 后执行此文 1、下载Nethunter:Get Kali | Kali Linux 然后push 到sdcard 里, 2、打开magisk,选择刚刚下好的…...
Maven和Eclipse联合开发
Maven和Eclipse联合开发 java list 对象个数 size java List 取第一个对象.get(0) baseCrmSpecialclient.get(0).getFxid() System.out.print 换行 System.out.print(item.getCode()"\r\n"); java for循环用法 https://blog.csdn.net/rank/list/total Java for-ea…...
宝塔面板部署node+vue项目注意事项
宝塔面板部署nodevue项目注意事项 宝塔连接云服务器 如果服务器上没有安装宝塔面板,需要先安装,安装流程如下: 从宝塔官网主页进去,点击下载安装,然后点击在线安装 输入服务器IP和密码在服务器上安装宝塔面板 等待一…...
MATLAB | R2023a更新了哪些好玩的东西
R2023a来啦!!废话不多说看看新版本有啥有趣的玩意和好玩的特性叭!!把绘图放最前面叭,有图的内容看的人多。。 1 区域填充 可以使用xregion及yregion进行区域填充啦!! x -10:0.25:10; y x.^…...
MySQL对表操作
目录 CRUD 增加(Create) 查询(Retrieve) 全列查询 指定列查询 查询字段为表达式 别名 去重:DISTINCT 排序:ORDER BY 条件查询:WHERE 逻辑运算符: 修改(Update) 删除&…...
Downie 4 4.6.12 MAC上最好的一款视频下载工具
Downie for Mac 简介 Downie是Mac下一个简单的下载管理器,可以让您快速将不同的视频网站上的视频下载并保存到电脑磁盘里然后使用您的默认媒体播放器观看它们。 Downie 4 Downie 4 for Mac Downie 4 for Mac软件特点 支持许多站点 -当前支持1000多个不同的站点&…...
使用Android高性能音频--OpenSL ES和AAudio
AAudio的概念介绍: AAudio 是作为 OpenSL ES 库的轻量级原生 Android 替代项而开发。 与 OpenSL ES 相比,AAudio API 不仅较小,而且容易使用。 AAudio 是在 Android O 版本中引入的全新 Android C API。 因此 API 是专为需要低延迟的高性能音频应用而设…...
eNSP 构建基本WLAN
配置项配置参数AP组 名称:hcia-group 应用模板:域管理模板hcia-domain、VAP模板hcia-vap 域管理模板 名称:hcia-domain 国家码:cn SSID模板 名称:hcia-ssid SSID名称:hcia-wlan 安全模板 名称:h…...
记录一次C#/.NET以及VB p-code/native的逆向破解
记录一次C#/.NET以及VB p-code/native的逆向破解 玩了5份样本,2份dotnet的,2份native的和1份pcode的。 dotnet framework程序 dotnet的相对会简单,只需要使用dnspy工具打开目标程序,找到逻辑点后,点编辑函数࿰…...
IO-操作系统
用户态和内核态 现代操作系统,为了保护系统的安全,都会划分出内核空间和用户空间,或者我们经常说的内核态和用户态。简单来说,就是划分为内核态和用户态两个等级,运行在用户态的进程大都是一些应用程序,能够…...
PyTorch Scheduler动态调整学习率
文章目录 PyTorch动态调整学习率1.使用官方scheduler2.自定义scheduler参考 PyTorch动态调整学习率 深度学习中长久以来一直存在一个令人困扰的问题,那就是如何选择适当的学习率。如果学习速率设置得过小,会导致模型收敛速度缓慢,训练时间延…...
【北京迅为】《iTOP-3588开发板系统编程手册》-第14章 GPIO应用编程
RK3588是一款低功耗、高性能的处理器,适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用,RK3588支持8K视频编解码,内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…...
ZooKeeper写数据流程
ZooKeeper写数据流程 初始化连接: 客户端初始化与 ZooKeeper 集群的连接,连接可以是 TCP 连接或者基于 UDP 的通信。客户端可以连接到集群中的任何一个节点。 查找 Leader: 当客户端发送写请求时,如果连接的节点不是 Leader&…...
C#中的Task:异步编程的瑞士军刀
在现代软件开发中,异步编程已经成为处理I/O密集型任务和网络操作的重要手段。C#中的Task是.NET Framework 4.0引入的一个并发编程的抽象,它在后续的.NET Core和.NET 5中得到了进一步的发展和完善。Task代表了一个异步操作,可以等待它的完成&a…...
Altium Designer 10 布线规则定制
一、安全间距设定 为确保电子元件之间不产生电气短路,必须设定适当的安全间距。在Altium Designer 10中,推荐的安全间距应至少为0.2mm(8mil),对于高压或高电流的部分,间距可能需要更大。此设定可在布线规则中的“Clearance”选项中进行调整。 二、线宽和线型选择 线宽…...
超越现实的展览体验,VR全景展厅重新定义艺术与产品展示
随着数字化时代的到来,VR全景展厅成为了企业和创作者展示作品与产品的新兴选择。通过结合先进的虚拟现实技术,VR全景展厅不仅能够提供身临其境的观展体验,而且还拓展了传统展示方式的界限。 一、虚拟现实技术的融合之美 1、高度沉浸的观展体验…...