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

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

插入排序法(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;
}

输出结果:


全新YOLOv11有效涨点改进专栏目录 | 本专栏持续更新500+篇内容 | 包含各种卷积、主干网络、各种注意力机制、检测头、损失函数、小目标检测改进、二次创新模块、独家创新等几百种创新点改进 YOLOv11专栏持续更新500+种创新改进方案,涵盖卷积优化、注意力机制、主干网络、Neck特征融合、检测头、小目标检测等核心模块。提供独家创新点组合方案、模型轻量化改进及最新Mamba架构融合技术,配套完整实验代码和训练参数解析。订阅用户可加入专属答疑群,获取一键运行项目支持。专栏包含YOLOv11网络结构详解、配置文件解读等入门必读内容,助力科研论文发表与模型性能提升。限时开放订阅通道,提供多种涨点改进方案组合,满足不同研究需求。 阅读详情

相关推荐

王道考研操作系统笔记(第一章)附:王道考研408所有PPT和思维导图

学习感想 别人的笔记对你的学习基本上没有用处,容易培养人的惰性,如需ppt和思维导图请拉到最后,有github链接 记笔记并不是一件浪费时间的事情,还有利于多次学习 真心希望大家在学习的过程中记笔记 操作系统 第一章 计算机系统概述 1.1 操作系统 1.1.1 操作系统的概念和功能 概念 操作系统(Operating System, OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软

qq_41732756的博客 1万+

八大排序算法之插入排序

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

Monster_Girl 667

VMware + ubuntu20.04 + qemu安装

遇到报错可参考:(从ubuntu裸系统开始安装)

NosONE 3230

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

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

changsoon 998

从TM1到TM9:手把手教你用Wireshark抓包分析LTE下行调度与传输模式切换

本文详细解析了如何使用Wireshark抓包分析LTE下行调度中的传输模式切换,从TM1到TM9的动态调整过程。通过实战案例,包括小区边缘移动、高速场景和多用户调度,揭示eNodeB如何基于信道质量指标(如RSRP、SINR)动态切换传输模式,并提供关键信令解析和优化建议,助力网络工程师提升LTE网络性能。

weixin_42651748的博客 315

细聊Oracle通过ODBC数据源连接SQL Server数据库

    类似文章搜索引擎上有很多,内容大致相同,今天所谓细聊是因为我在借鉴这些文章时候走了些弯路,所以写此文,为自己备忘,同时如果能为初涉此处知识点的小伙伴提供些帮助就更好了,废话不多说。    我的应用场景:    项目系统使用oracle数据库,与客户的第三方系统供应商实现资源共享,对方为sql server数据库;    我的测试开发环境为64bitwin7PC机,本机上装有64位Oracl...

xueren_83的博客 1万+

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

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

qq_41219243的博客 1929

CosyVoice 本地部署详细教程 手把手小白教程

本文提供了详细的CosyVoice本地部署教程,强调了避免中文名称和空格的重要性,并列出了必要的软件安装步骤,包括CUDA、cuDNN、Git和Miniconda。教程涵盖了从检查CUDA版本到下载模型和运行模型的全过程,确保用户能够顺利部署并使用CosyVoice。

huazn612的博客 2万+

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

内部排序之插入排序法

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

【数据分析】基于多组学数据整合的微生物与宿主互作网络构建及可视化分析

综上所述,本教程通过详细的步骤和方法,展示了如何整合微生物群落数据、宿主基因表达数据和代谢组数据,构建微生物与宿主互作网络,并进行可视化分析。这种方法为研究微生物与宿主之间的复杂关系提供了一种有力的工具,有助于推动相关疾病的研究和治疗。然而,在实际应用中,需要注意数据处理和分析过程中的各种问题,并结合实验验证来提高研究结果的可靠性和科学性。未来,随着多组学技术的不断发展和完善,以及数据分析方法的创新,相信我们能够更深入地理解微生物与宿主之间的互作机制,为疾病的预防、诊断和治疗提供更有力的支持。

专注生信领域 370

零基础DSP实战TMS320F28035:第九节,ADC比较器&EPWM

ADC比较器框图如下所示:-电压-----------------------------输出-电压A>电压B------------------ 1-电压A

sinat_30943509的博客 2535

线性表的插入排序

插入排序算法

stulcc的博客 3382

AIGC实战——基于Transformer实现音乐生成

Transformer 是最流行的音乐生成技术之一,因为音乐可以视为一个序列预测问题,Transformer 模型将音符视为一个个符号的序列(类似于句子中的单词),从而用于生成音乐。Transformer 模型基于先前音符预测下一个音符,生成音乐作品。在本节中,将学习如何处理音乐数据,并应用 Transformer 生成与给定训练集风格相似的音乐。

盼小辉丶的博客 1万+

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

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

PIONEER 529

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

数据结构之插入排序

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

mly15191882818的博客 225

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

文章目录: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万+

ssm框架搭建

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

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

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

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、付费专栏及课程。

余额充值