内部排序算法——插入排序法

内插法计算公式 已知道一个数字的上下限,以及其对应的取值时,当我们要求的取值的数值位于这个区间时,即可根据本内插法公式计算对应取值。 立即下载

插入排序法(Insert Sort)是逐一将数组中的元素与已排序好的元素进行比较,再将该数组元素插入到适当的位置。

下面利用数组6、4、9、8、3的由小到大排序过程来说明插入排序法的演算方式。

步骤一   6

步骤二     6     插入4 通过与6的比较,将4插入到6前得到  4、6

步骤三 4 、6       插入9  通过逐一与4、6比较最终插入到6后 4 、6、9

步骤四 4、6 、9 插入8 通过逐一与4、6、9比较最终插入到6和9中间 4、6、8、9

步骤五 4、6 、8 、9    插入3 通过逐一与4、6、8、9比较最终插入到4前 3、4 、6 、8、9

由上可知:总的比较次数为1+2+……+(n-1)这里n表示数组长度 共n*(n-1)/2次

总结插入排序性质:

1、最坏与平均情况都需要比较n*(n-1)/2次;

2、插入排序是稳定的排序法,因为插入排序不改变原来整体的排列顺序;

3、插入排序只需额外的一个空间,其空间复杂度最佳为O(1);

4、插入排序法适用于大部分数据已经排过序或已排序的数组新增数据后进行排序;

5、插入排序法会造成大量的数据移动,因此建议在链表结构上使用。

下面是程序实现插入排序法:

/*
[名称]:插入排序法
*/
#include<iostream>
#define SIZE 6
using namespace std;
void inputarr(int arr[],int len);//输入数组元素函数
void show(int arr[],int len);//显示数组元素函数
void insert(int arr[],int len);//声明插入排序法函数
void swap(int &x,int &y);
int main()
{
int data[SIZE];
inputarr(data,SIZE);
cout<<"您输入的原始数组为:";
show(data,SIZE);
insert(data,SIZE);
system("pause");
return 0;
}
void inputarr(int arr[],int len)
{
for(int i=0;i<len;i++)
{
cout<<"请输入第"<<i+1<<"个元素:";
cin>>arr[i];
}
}
void show(int arr[],int len)
{
for(int i=0;i<len;i++)
cout<<arr[i]<<" ";
cout<<endl;
}
void insert(int arr[],int len)
{
int copylen=len;
while(--len)
{
for(int i=0;i<copylen-len;i++)
{
if(arr[copylen-len]<arr[i])
{
swap(arr[copylen-len],arr[i]);
}

}
cout<<"第"<<copylen-len<<"扫描";
for(int i=0;i<copylen;i++)
cout<<arr[i]<<" ";
cout<<endl;
}

}
void swap(int &x,int &y)
{
x=x+y;
y=x-y;
x=x-y;
}

输出结果:


zemax双透镜公差分析 蒙特卡罗分析: 评估公差的整体影响,模拟过程中产生一系列随机的lens,满足指定的公差,然后再按照标准评估。公差分析,就是在设计了一个理想的系统后,想看看实际生产过程中如果产生公差(误差),系统会坏到什么程度,也就是光学性能受到多大影响。反灵敏度分析:分别对每个公差在性能方面的一个给定的最小允许减少量来计算公差,也就是限制了系统性能的变化,和灵敏度分析方向相反。灵敏度分析对每个公差单独求值,分别计算每个公差操作数的最大、最小、标准值(如上图)所有设计上可能的公差都列出来了。注意要固定透镜的口径。 阅读详情

相关推荐

现代 AI Agent 编排技术全景(1)—— 分类体系与四大技术维度

本文介绍基于 LLM 的现代 Agent 分类体系与四大技术维度,形成能够刻画不同 Agent 产品架构特征的分类法

佚失的诗篇 236

八大排序算法之插入排序

在数据结构中,排序是处理数据中经常用到 ,而排序又分为内排序和外排序。内排序指的是排序期间,数据全部放在内存中进行排序;而外排序则是因为在排序期间全部对象个数太多,不能同时放在内存中,在排序的过程中不断进行内外存之间移动的排序。选择合适排序算法这个时候就非常重要,可以帮助我们减少时间、空间等一些可避免的开销。

Monster_Girl 667

Ubuntu20.04系统笔记本网卡AX211无法找到wifi问题

之前电脑的系统是18.04基本上安装好了系统,可以直接连上wifi,在买了拯救者y9000p2022版本之后,因为网卡太新,安装ubuntu18.04或者20.04之后会没有wifi连接,非常不方便。于是上网找了各种帖子去解决这个问题。具体实现有所不同。 主要参考了这个帖子来解决的:http://t.csdn.cn/7807R 首先: sudo apt install flex bison 然后: git clone https://github.com/intel/backpor.

weixin_42825962的博客 1万+

内部排序算法1(插入排序)

内部排序算法1(插入排序) 1. 插入排序 2. 折半插入排序 3. 希尔排序

changsoon 998

163种中草药图像数据集构建与ResNet-50迁移学习实战指南

在计算机视觉领域,高质量标注数据集是模型训练的基石,直接影响图像分类、目标检测等任务的性能。其核心原理在于为算法提供结构化的监督信号,通过深度学习模型学习从像素到语义的映射关系。构建此类数据集的技术价值在于解决了特定垂直领域(如中医药)数据稀缺的痛点,为AI技术落地提供了关键“燃料”。在应用场景上,标准化数据集广泛支撑着教学演示、算法验证和产业应用开发。本文聚焦于中草药识别这一细分领域,详细介绍了一个包含163种常见药材、经过多源聚合与清洗的图像数据集构建全过程,并提供了基于PyTorch和ResNet-5

weixin_33672400的博客 455

【AI Agent教程】各种Agent开发框架都是如何实现ReAct思想的?深入源码学习一下

驱动大模型有很多种方式,例如纯Prompt方式、思维链方式、ReAct方式等。ReAct 方式是 AI Agent 最常用的实现思路之一,它强调在执行任务时结合推理(Reasoning)和行动(Acting)两个方面,使得Agent能够在复杂和动态的环境中更有效地工作。

同学小张的博客 6396

常见七大排序算法总结--超详细适合初学者

一、排序算法的概念以及应用 (一)概念 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。 (二)分类 内部排序:数据元素全部放在内存中的排序。 外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。 (三)应用 1.淘宝京东商品的销量排名 2.各大高校的综合实力排名 3.以及各大城市GDP排名 4.外卖评分以及百度竞价排名 (四)常见的排序算法 二、排序算法的实现(升序排列) (一)

qq_41219243的博客 1929

智能车图像处理21-进阶篇13--正入十字补线2

这篇文章主要的正入十字补线与1基本相同,主要防止图像中双十字的问题。

taiyuezyh的博客 2032

【重温基础算法】内部排序之插入排序法

内部排序之插入排序法

有问题的请私信或关注v【技术印记】留言 372

Codex 100个真实案例 - 用AI绘制CAD机械图纸(工程师看了直呼内行)

本案例将展示如何用 Codex 生成 Python 脚本,通过 `ezdxf` 库绘制标准 DXF 格式的 CAD 机械图纸。我们会从零开始,逐步实现直线、圆、圆弧、标注等基本图形元素,最终绘制出一张包含主视图、俯视图、尺寸标注、标题栏和技术要求的完整法兰盘零件图。还会演示参数化批量生成不同规格零件图和自动 BOM 物料清单,生成的 DXF 文件可直接在 AutoCAD、FreeCAD 中打开。全程用自然语言驱动 Codex,工程师看完直接上手!

yueyeguzhuo的专栏 2073

Linux | Ubuntu18.04安装WIFI6 AX201驱动完整教程

本节介绍了如何在Ubuntu18下安装AX201驱动的教程。

九七的博客 8881

线性表的插入排序

插入排序算法

stulcc的博客 3382

模型预测控制(MPC)解析(二):单输入单输出系统

在上一篇中,为了便于说明,预测控制系统采用单输入单输出系统为例进行设计。由于系统模型使用的是状态空间方程,于是可以很容易的将这种设计方法可以扩展到多输入、多输出系统。

行者无疆的博客 8223

【八大数据排序法】插入排序法的图形理解和案例实现 | C++

排序算法是我们在程序设计中经常见到和使用的一种算法,它主要是将一堆不规则的数据按照递增或递减的方式重新进行排序。在如今的互联网信息时代,随着大数据和人工智能的发展,大型企业的数据库中有亿级的用户数据量。因此对其进行处理,排序算法也就成为了其中必不可缺的步骤之一。

PIONEER 529

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

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

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

数据结构之插入排序

插入排序也属于内部排序,是以插入的方式寻找元素的适当位置。 基本思想:将n个待排序的元素看作一个有序列表和一个无序列表,开始时有序列表中有1个元素,无序列表中有n-1个元素,每次插入时从无序列表中取出第一个元素,将这个元素与有序列表中的元素比较大小,找到其合适的插入位置,即可得到一个有序列表。思路图如下所示: 代码如下所示: /** * 插入排序:将列表看成是一个有序列表和一个无序列表,每次把无序列表中的第一个元素插入到有序 * 列表的合适位置。 */ public class Inser

mly15191882818的博客 225

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序

文章目录:1. 插入排序2.希尔排序 1. 插入排序 步骤: 1.从第一个元素开始,该元素可以认为已经被排序 2.取下一个元素tem,从已排序的元素序列从后往前扫描 3.如果该元素大于tem,则将该元素移到下一位 4.重复步骤3,直到找到已排序元素中小于等于tem的元素 5.tem插入到该元素的后面,如果已排序所有元素都大于tem,则将tem插入到下标为0的位置 6.重复步骤2~5 动图演示如下: 思路:   在待排序的元素中,假设前n-1个元素已有序,现将第n个元素插入到前面已经排好的序列中,使得前n个

HanMeng的博客 69万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

插入排序详解(内置动图)

关于插入排序算法的图解和代码介绍

weixin_50665516的博客 303

插入排序

插入排序法介绍: 插入式排序属于内部排序法,是对于欲排序的元素以插入的方式寻找该元素的位置,以达到排序得到目的。 插入排序的思想 插入排序的基本思想是:把n个待排序的元素看成是一个有序表和一个无序表,开始时有序表中只含有一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把他的排序码y依次和有序表元素的排序码比较,将它插入到有序表的适当位置,使之成为新的有序表。 插入排序思路图: 代码实现 public static void insertSort(int[] arr){

weixin_44408619的博客 131

[数据结构]八大排序算法(C语言)

概述 排序:给定一个元素序列,按照每个元素的关键码将元素重新排列,使关键码从小到大(正序)或从大到小(逆序)排列。 排序可根据是否将全部元素放入内存分为内部排序和外部排序。 内部排序:数据元素全部放在内存中的排序。 外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[

RMA515T的博客 2万+

常见排序算法实现(希尔排序,快速排序...)

常见排序算法的实现及特性分析

L1692579428的博客 315

[排序算法]-拿捏插入排序法

彻底搞懂插入排序法基本介绍核心思想实例讲解主要思路图示演示代码实现 基本介绍 待排序数据插入到前面已经排好的数据中,每次插完,前面又是新的排好的序列。 ——爱因斯坦 核心思想 插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。 实例讲解 主要思路 插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排

plgong 175

数据结构与算法学习笔记——排序算法(三):插入排序

1、介绍 插入排序(Insertion Sorting)属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。 2、算法分析 把 n 个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表,直到无序表中的元素都插入到有序表中。 3、代码实现 package com.czq.al

最初的模样 289

插入排序--python实现

插入排序法介绍: 插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。 插入排序法思想: 插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序...

qq_44273739的博客 139

算法之【插入排序法】

算法之插入排序法 相比上次的冒泡排序法,插入排序法更符合人类的习惯. 所谓插入排序法,就是检查第i个数字,如果在它的左边的数字比它大,进行交换,这个动作一直继续下去,直到这个数字的左边数字比它还要小,就可以停止了。插入排序法主要的回圈有两个变数:i和j,每一次执行这个回圈,就会将第i个数字放到左边恰当的位置去。 1 2 3 4 5 6 7 8 9 ...

weixin_30731287的博客 127

小白都可以看懂的排序算法

排序算法 冒泡排序 基本思想:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部。 优化:因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较。(这里说的优化,可以在冒泡排序写好后,在进行) 代码实现:(已优...

WJJ_NAN的博客 270

黑马程序员-----排序算法总结

------Java培训、Android培训、iOS培训、.Net培训期待与您交流! -------    如下图所示,排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 我们通常所说八大排序是指的内部排序。      在实际的编写代码的过程中,如果需要对数组进行排序,简单的一个函数Array

YJDZY的博客 644
上一篇: 内部排序法——冒泡排序法
下一篇: 内部排序算法——选择排序
willian0621
博客等级 码龄17年 50粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值