排序算法-插入排序

漫谈经典排序算法:二、各种插入排序解析及性能比较 1、序言 这是《漫谈经典排序算法系列》第二篇,解析了各种插入排序算法。主要包括:直接插入排序、折半插入排序、表插入排序、希尔插入排序。每一种算法的开头都叙述了引出该算法的原因,然后给出代码,最后分析算法效率及和其他插入排序相比,优劣在哪里。 各种排序算法的解析请参考如下: 阅读详情

本篇复习的是插入排序。见度娘的原理:

直接插入排序的算法思路:

(1) 设置监视哨r[0],将待插入记录的值赋值给r[0];

(2) 设置开始查找的位置j;

(3) 在数组中进行搜索,搜索中将第j个记录后移,直至r[0].key≥r[j].key为止;

(4) 将r[0]插入r[j+1]的位置上。

#include <iostream>

using namespace std;
//插入排序算法
int InsertSort(int* data, int sizeOfData)
{
	int x,t = 0;
	for (int i = 1; i < sizeOfData; i++) {
		t = *(data + i);
		//若前面的数字比后面的数据大时,则对数据进行后移,留出空位置给哨兵所在的位置数值插入
		for (x = i-1; x >=0&&*(data+x)>t; x--) {
			*(data + x + 1) = *(data + x);
		}
		*(data + x + 1) = t;//因为for循环最后一次执行了一次x--操作,所以需要进行+1才是真正需要插入的位置
		for (int j = 0; j < sizeOfData; j++) {
			cout << *(data + j) << " ";
		}
		cout << endl;
	}
	return 0;
}

int main()
{
	int data[] = { 8,7,9,3,5,4,1,-2,18,10,-3 };
	int sizeOfData = 11;
	InsertSort(data, sizeOfData);
	for (int i = 0; i < sizeOfData; i++) {
		cout << data[i] <<" ";
	}
	cout << endl;
}

打印出来的结果:

7 8 9 3 5 4 1 -2 18 10 -3
7 8 9 3 5 4 1 -2 18 10 -3
3 7 8 9 5 4 1 -2 18 10 -3
3 5 7 8 9 4 1 -2 18 10 -3
3 4 5 7 8 9 1 -2 18 10 -3
1 3 4 5 7 8 9 -2 18 10 -3
-2 1 3 4 5 7 8 9 18 10 -3
-2 1 3 4 5 7 8 9 18 10 -3
-2 1 3 4 5 7 8 9 10 18 -3
-3 -2 1 3 4 5 7 8 9 10 18
-3 -2 1 3 4 5 7 8 9 10 18

大功造成,已经实现了功能。

直接插入排序算法之表插入排序详解 插入排序属于稳定排序法,是一种常用的排序算法。直接插入排序算法可以利用静态数组来实现,也可以使用静态链表或者单链表来实现。本文给出了直接插入算法的静态链表实现方法,即表插入排序算法。 基于静态链表实现直接插入排序,就是把待排序的数组放入静态链表中,通过修改静态链表中的索引域的值来给出排序结果。该排序方法不改变原数组中元素的位置,只是在索引域中给出其在排序表中位置,因此相比较于直接插入排序算法,本算法不需要移动元素。 阅读详情

相关推荐

Win7/Win10双系统兼容指南:Arduino IDE 1.8.19与2.3.2的安装避坑全攻略

本文详细解析了在Win7/Win10双系统环境下安装和配置Arduino IDE 1.8.19与2.3.2版本的完整指南,特别针对ESP32开发环境的深度配置和COM端口常见问题提供了实用解决方案。通过版本对比、安装优化和性能调优,帮助开发者高效搭建稳定的物联网开发环境。

weixin_30500105的博客 186

常见排序及算法实现(一)插入排序

#include <stdio.h> #include <stdlib.h> #define BUFSIZE 10000 void InsertSort(int* src, int n){ int i, j; int tmp; for (i = 1; i < n; ++i){ tmp = src[i]; for (j = i; j > 0 &a...

persistence_Y的博客 211

变焦跟踪理论基础(如何在变焦过程中保持清晰)

如何在整个变焦过程中一直保持图像的清晰度或焦点是变焦跟踪的主要挑战。 当用户在缩放跟踪的情况下改变缩放时,设备保持对焦。 然而,在没有变焦跟踪的情况下,图像变得失焦,图像在变焦跟踪后由于自动对焦(AF)算法才最终对焦。...................................................

ChenYX的博客 20万+

排序算法之插入排序C语言实现

插入排序 1、直接插入排序 算法思想:直接插入排序是无序序列插入到有序序列中,通常假定a[0]为已经排好序的子序列,然后将剩下无序序列一个一个插入到有序的子序列中。适用于基本有序和数据量不大的情况。 例如对于一个无序序列{45,32,56,71,12}来讲,首先确定45为有序的,然后在无序序列中向右遍历,32小于45则插入到45的前面,再继续往右遍历,56大于32同时也大于45则应该插入到45后面...

xiaobinbin2372的博客 1万+

BurpSuite+安卓模拟器双保险:避开真机抓包限制的完整配置指南

本文详细介绍了如何通过BurpSuite与安卓模拟器(如雷电、夜神)协同工作,绕过真机抓包限制的完整配置指南。从环境准备、网络拓扑配置到证书部署和流量分析,提供了一套高效的解决方案,帮助安全测试人员稳定捕获手机数据包,提升测试效率。

Apple的专栏 439

从模态到颤振:深入解读Nastran的V-g/V-f图,判断你的机翼设计是否安全

本文深入解析Nastran中的V-g/V-f图在机翼颤振分析中的应用,帮助工程师准确判断设计安全性。通过模态分析到颤振边界的完整判读逻辑,结合气动弹性特性,指导优化机翼结构设计,确保飞行安全。

weixin_28732953的博客 470

排序算法1之插入排序

插入排序 排序算法作为互联网找工作的必考的问题,现在得补补了。之前对排序算法有一些了解,有些排序算法看起来比较简单,但是真要自己手写code也不是那么容易的。所以纸上得来终觉浅,绝知此事要躬行。 算法的三个特性 时间效率,一般情况,当然希望排序算法越快越好。一般排序算法能达到Ω(n)\Omega(n)的时间复杂度就已经非常好了 。 空间效率,受限于计算机的硬件条件,加上大数据处理问题日渐普

小羊哈利 536

JasperReport制作行内容合并的表格

效果图: 实现思路一: 交叉表 另一个思路: 普通表格 缺点:无法实现内容 垂直居中显示 准备工作 一、数据准备 DROP TABLE IF EXISTS `address_item_sex_value`; CREATE TABLE `address_item_sex_value` ( `id` int(11) NOT NULL AUTO_INCREM...

weixin_34148456的博客 2468

python排序算法——插入排序

本文仅仅简单介绍了插入排序的理论知识,还通过代码更加直观的了解。插入排序算法是把给定数组中的元素依次插入到一个新的数组中,最终得到一个完整的有序数组。插入排序是一个稳定的排序算法。

阿极的博客 1669

safetensors_rust.SafetensorError: Error while deserializing header: MetadataIncompleteBuffer解决方案

本文主要介绍了safetensors_rust.SafetensorError: Error while deserializing header: MetadataIncompleteBuffer解决方案,希望能对使用Python的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案 2.1 Windows 2.2 Linux

weixin_43178406的博客 15万+

软件可靠性测试与评价

本文系统介绍了软件可靠性工程的核心内容,包括可靠性概念、模型分类、测试方法和评价体系。重点解析了可靠性测试的三大步骤:定义运行剖面、设计测试用例和实施测试收集数据,并以智能安防系统为例说明具体应用。可靠性评价需结合业务场景,通过量化指标(MTBF、失效率等)和模型预测持续优化系统。文章强调可靠性需贯穿软件全生命周期,通过闭环反馈实现持续改进,为关键系统提供质量保障。

moton2017的博客 2050

排序算法学习——插入排序

分享插入排序的学习笔记

LiuYaoheng的博客 1253

【图像超分】论文复现:轻量化超分 | 残差特征蒸馏网络RFDN的Pytorch源码复现,跑通源码,整合到EDSR-PyTorch中进行训练,补充CCA的实现!

本文介绍了将RFDN(残差特征蒸馏网络)整合到EDSR-PyTorch框架中的实现过程。主要内容包括:1)环境配置与数据集准备;2)测试源码提供的x4预训练模型,并通过修改图像裁剪函数解决HR与SR尺寸不一致问题;3)训练过程详解,包括将RFDN源码模块整合到EDSR框架中,调整模型参数输入方式。文章还提供了完整的代码实现、训练好的模型权重下载链接,并对RFDN架构进行了详细拆解与注释。通过将RFDN与EDSR相结合,实现了轻量级图像超分辨率重建,获得了PSNR/SSIM等指标及可视化结果。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 432

排序算法之插入排序

#排序算法之插入排序

amenga123的博客 283

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

排序算法——插入排序

houapple的记忆屋 915

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

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

【排序算法】——插入排序

排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列。所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。

2302_80243065的博客 1566

排序算法之——插入排序分析

前言 最简单的排序算法之一是插入排序(insertion sort)。 思路 插入排序的思路是这样的: 插入排序。由N-1趟排序完成,对于i=1到N-1趟,保证从位置0到位置i上的元素为已排序状态(但不保证已排序的值一定小于未排序的值)。 过程: 对于位置i,先把i位置的值保存起来,然后把i挖空。 依次与前一个位置比较,比较i-1到0位置上的元素; 若发现i对应的值小于某个位置的值,则将该位置的...

日积月累,天道酬勤 1585

前端排序算法——插入排序

插入排序简介 简单来说,插入排序就是从头开始两两相比,直到遍历到末端; 这个排序算法一个明显的特点是,在排列过程中,前面的值是按顺序排好的,后面的值还是原来的样子,然后逐渐像前面的值那样变得有序; 先看一下在JS中是怎么实现的 插入排序 代码 function insertionSort(arr) { var len = arr.length; var preIndex, current; for (var i = 1; i < len; i++) { preI

TM_Godspeed的博客 455

JavaScript的排序算法——插入排序

插入排序(Insertion Sort) 插入排序是一种简单的排序算法,这种算法可以一次构建最终排序的数组(或数列)。它在大型数列上的排序效率会远低于一些更高级的排序算法,如快速排序、堆排序、归并排序。 中心思想:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 编码实现: function insertionSort(arr){ var ne...

coding 616

【排序算法】插入排序

文末有算法可视化哦~

weixin_50308184的博客 113

排序算法—————————————————插入排序

最近几天在学习这个数据结构算法相关的,首先学习到的一个排序的算法就是插入排序。排序在生活中是非常常见的,比如在网购中我们筛选商品会根据评论,购买数量,价格,等内容的排序去选择我们想要的商品。由此可见排序在我们的生活中是非常有用的。插入排序分为两个部分第一个是简单的的插入排序,第二个是希尔排序相对于简单的插入排序的一个优化!

2201_75943325的博客 152

排序算法之插入排序详解

1、基本介绍 插入式排序属于内部排序法,是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插...

∑ 1002
上一篇: 排序算法-冒泡排序
下一篇: 排序算法-选择排序
&捕风的汉子&
博客等级 码龄17年 27粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值