【数据结构 | 直接插入排序】

news2025/2/24 10:55:11

直接插入排序

  • 思路
  • 直接插入排序

思路

扑克牌是我们几乎每个人都可能玩过的游戏。最基本的扑克玩法都是一边摸牌,边理牌。假如我们拿到了这样一手牌,如下图所示:

在这里插入图片描述

理牌的方法都是不用教的。将3和4移动到5的左侧,再将2移动到最左侧,顺序就算是理好了。这里,我们的理牌方法,就是直接插入排序法。

在这里插入图片描述

首先,我们由上动图可知:
插入排序是吧一个数组里的每一个数字往前遍历,比较大小,若排升序,则若该数字小于前一个数字,则吧前一个数字往后移动自己往前走一步
当不小于前面这个数字时,则吧该数字插到空位
重复以上步骤。

我们规定,从第一个数字开始,第二个数字与第一个相比,若小,则交换位置。
所以整体的遍历,i 应该从 0 开始,i < n-1.

在这里插入图片描述

直接插入排序

InsertSort.c

//直接插入排序
void InsertSort(int* a, int n)
{
	for (int i = 0; i < n - 1; i++)
	{
		int end = i;
		int tmp = a[end + 1];

		//单趟排序
		while (end >= 0)
		{
			if (tmp < a[end])
			{
				a[end + 1] = a[end];
				end--;
			}
			else
				break;
		}
		a[end + 1] = tmp;
	}
}



代码测试

在这里插入图片描述

结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1383830.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Centos安装Datax

Centos7安装DataX 一、DataX简介二、DataX的数据源支持三、安装DataX1、下载DataX2、解压3、检验是否安装成功4、使用 四、实践案例1、环境信息2、编写同步的配置文件(user_info.json)3、执行同步4、验证同步结果 一、DataX简介 DataX 是阿里云 DataWorks数据集成 的开源版本&a…

Spring来了,春天还会远吗?

结束了JVM的学习后&#xff0c;要进入的是JavaEE进阶的学习了。JavaEE进阶学习内容很多很丰富&#xff0c;并且也很有难度。今天我们就从Spring开始讲起。 目录 框架的好处 怎么学框架 Spring核心与设计思想 容器 IoC Spring IoC DI&#xff08;Dependency Injection&a…

GAN生成对抗网络介绍

GAN简介 GAN 全称是Generative Adversarial Networks&#xff0c;即生成对抗网络。 “生成”表示它是一个生成模型&#xff0c;而“对抗”代表它的训练是处于一种对抗博弈状态中的。 一个可以自己创造数据的网络&#xff01; 判别模型与生成模型 判别模型&#xff08;Discr…

Uniapp软件库源码-全新带勋章等

测试环境&#xff1a;php7.1。ng1.2&#xff0c;MySQL 5.6 常见问题&#xff1a; 配置好登录后转圈圈&#xff0c;检查环境及伪静态以及后台创建好应用 上传图片不了&#xff0c;检查php拓展fileinfo 以及public文件权限 App个人主页随机背景图&#xff0c;在前端uitl文件夹里面…

第9章-第2节-Java中的反射机制

1、概念&#xff1a; 反射机制&#xff1a;是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意属性和方法&#xff1b;这种动态获取信息以及动态调用对象方法的功能称为 java…

记录汇川:H5U于Factory IO测试13

主程序&#xff1a; 子程序&#xff1a; IO映射 子程序&#xff1a; 辅助出料 子程序&#xff1a; 模式选择 子程序&#xff1a; 示教程序 子程序&#xff1a; 手动程序 子程序&#xff1a; 统计程序 子程序&#xff1a; 异常报警 子程序&#xff1a; 自动程序&#xff1a; F…

Linux前后端项目部署

目录 1.jdk&tomcat安装 配置并且测试jdk安装 修改tomcat 配置文件 登入tomcat 发布 安装mysql 导入sql数据 发布项目war包 redis安装 nginx安装 配置nginx域名映射 部署前端项目 centos 7的服务安装 安装jdk 安装tomcat 安装Mysql 安装redis 安装nginx 前后…

STM32的FMC独立管理和控制外部存储器

在STM32中&#xff0c;FMC&#xff08;Flexible Memory Controller&#xff09;是一个功能强大的外部存储器控制器&#xff0c;用于管理和控制外部存储器设备&#xff0c;如SRAM、SDRAM、NOR Flash等。FMC允许将多个存储器设备连接到微控制器&#xff0c;并通过不同的片选线进行…

蝉妈妈简单使用

蝉妈妈使用教程 热点视频 如何通过蝉妈妈分析数据 如何使用

Python超详细基础文件操作(详解版)

一、文件操作 1. 文件打开与关闭 1.1 打开文件 在Python中&#xff0c;你可以使用 open() 函数来打开文件。 以下是一个简单的例子&#xff1a; # 打开文件&#xff08;默认为只读模式&#xff09; file_path example.txt with open(file_path, r) as file:# 执行文件操作…

深入理解 Spark(四)Spark 内存管理模型

Spark 中的内存管理和资源管理模型 Executor 进程作为一个 JVM 进程&#xff0c;其内存管理建立在 JVM 的内存管理之上&#xff0c;整个大致包含两种方式&#xff1a;堆内内存和堆外内存。 一个 Executor 当中的所有 Task 是共享堆内内存的。一个 Work 中的多个 Executor 中的…

centos源码编译安装nginx1.25.3脚本

Nginx是常见的反向代理服务器&#xff0c;以为经常要安装&#xff0c;所以做了一个install-nginx.sh 脚本&#xff0c;一个命令安装nginx #!/bin/sh # https://nginx.org/ # 本脚本自动安装 nginxr 软件到/usr/local/nginx 路径 # 安装成功后执行/usr/local/nginx/sbin/nginx即…

Javascript——vue下载blob文档流

<el-table-column label"操作" fixed"right" width"150" showOverflowTooltip><template slot-scope"scope"><el-button type"text" v-has"stbsd-gjcx-down" class"edit-button" click&…

[NAND Flash 5.5] PLC NAND 虽来但远

依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解NAND Flash》 <<<< 返回总目录 <<<< 前言 图片来源: 存储随笔 2022年8月份在美国FMS峰会上,Solidigm公司(前身为Intel NAND部门)展示了全球第一款基于PLC NAND研发的SSD。这也标志着,PLC…

第 12 章 多路查找树

文章目录 12.1 二叉树与B 树12.1.1 二叉树的问题分析12.1.2 多叉树12.1.3 B 树的基本介绍 12.2 2-3 树12.2.1 2-3 树是最简单的 B 树结构, 具有如下特点:12.2.2 2-3 树应用案例12.2.3 其它说明 12.3 B 树、B树和 B*树12.3.1 B 树的介绍12.3.2 B 树的介绍12.3.3 B树的介绍12.3.4…

FL studio破解版 V20.8.3 最新中文破解版

FL Studio是一款功能强大的水果音乐制作软件&#xff0c;为用户提供了一个全能的数字音频工作站&#xff0c;软件提供了编曲、剪辑、录音、混音等功能&#xff0c;满足用户的各种音乐制作需求。软件已经成功破解&#xff0c;全中文的软件界面&#xff0c;去除了试用时间限制&am…

vscode(visual studio code) 免密登陆服务器

1.生成密钥 首先&#xff0c;在本地&#xff0c;打开命令输入框&#xff1a; WinR–>弹出输入框&#xff0c;输入cmd,打开命令框。 然后&#xff0c;在命令框&#xff0c;输入 ssh-keygen -t rsa -C "love"按两次回车键&#xff0c;问你是否重写&#xff0c;选择…

【AUTOSAR】--01 AUTOSAR网络管理基础

AUTOSAR网络管理做了几个项目了&#xff0c;但发现还是有些理解不够深入的地方&#xff0c;最近趁着有个新项目也要做AUTOSAR网络管理&#xff0c;再从头梳理一下AUTOSAR网络管理&#xff0c;预计用2-3篇文章&#xff0c;把AUTOSAR网络重新梳理完成。 这是第一篇&#xff0c;主…

高效构建Java应用:Maven入门和进阶(二)

高效构建Java应用&#xff1a;Maven入门和进阶&#xff08;二&#xff09; 二.基于IDEA的Maven的工程创建2.1 梳理Maven工程GAVP属性2.2 Idea构建Maven JavaSE工程2.3 Idea构建Maven JavaEE工程2.4 Maven工程项目结构说明 二.基于IDEA的Maven的工程创建 2.1 梳理Maven工程GAVP…

H7303 无电感,线性恒流,低压差,大电流,车灯/台灯 9V 12V 24V 30V

线性恒流芯片是一种用于控制电流的电子元件&#xff0c;通常用于驱动LED等器件。它的工作原理是通过维持输出电流的恒定来保持被驱动器件的亮度或功率稳定。 具体来说&#xff0c;线性恒流芯片会监测输出电流并调整电压以保持恒定的电流流过被驱动器件。以下是其基本工作步骤&…