当前位置: 首页 > article >正文

插入排序详解

思路

把后面的值(temp)与前面的值(end)做对比,

若temp位置的值小于end位置的值,

end位置的值给end+1位置。。

语言难以描述,请大家看下图。

代码

void InsertSort(int *arr, int n)
{
	/*为了防止数组越界,我们最多访问到n-2就停止,
因为此时temp会赋值到n-1(数组的最后一个元素),
所以i<n-1即可*/
	for (int i = 0; i < n - 1; i++)
	{
		int end = i;
		int temp = arr[end + 1];

//注意是end>=0而不是end>0,因为下标为0与下标为1的值也需要比较
		while (end >= 0)
		{
			if (temp < arr[end])
			{
				arr[end + 1] = arr[end];
//end下标往数组前面走,继续下一次对比
				end--;
			}
//没有比temp大的值就终止本次循环
			else
			{
				break;
			}
		}
//前面没有比temp更小的值了,空出来的位置是end+1,temp的值就到这里来
		arr[end + 1] = temp;
	}
}


http://www.kler.cn/a/311614.html

相关文章:

  • 【Python特征工程系列】利用SHAP进行特征重要性分析-XGB模型为例(案例+源码)
  • AI大模型开发架构设计(14)——基于LangChain大模型的案例架构实战
  • 壹连科技IPO闯关成功!连接器行业上市企业+1
  • 使用Python实现智能食品营养分析的深度学习模型
  • 【非关系型数据库】【IOT设备】InfluxDB、TimescaleDB、Cassandra和MongoDB
  • NLP论文速读(NeurIPS2024)|使用视觉增强的提示来增强视觉推理
  • Facebook的用户隐私保护:从争议到革新
  • 【编程底层原理】mysql的redo log undo log bin log日志的作用,以及何时生成,涉及到哪些参数变量
  • Nexpose 6.6.269 发布下载,新增功能概览
  • Apache Hudi现代数据湖核心技术概论
  • 【Elasticsearch系列十四】Elasticsearch
  • C++ | Leetcode C++题解之第419题棋盘上的战舰
  • 深度解析ElasticSearch:构建高效搜索与分析的基石原创
  • 一问详解Unity下RTMP推送|轻量级RTSP服务|RTSP|RTMP播放模块说明
  • Perfetto slice提示App Deadline Missed
  • TMStarget学习——Functional Connectivity
  • 如何免费调用GPT API进行自然语言处理
  • 【毕业设计】基于 PHP 开发的社区交流系统
  • MySQL迁移达梦,两个数据库的不同之处,需要修改的地方有哪些(持续更新)
  • 【Tourism】Yuncheng(3)
  • 房屋租赁系统源码分享:SpringBoot + Vue 免费分享
  • [产品管理-22]:NPDP新产品开发 - 20 - 产品设计与开发工具 - 开发、制造、装配阶段
  • 小琳AI课堂 探索强化学习:通过Python迷宫示例掌握Q-learning算法
  • 安卓玩机工具-----多设备同时投屏操控的安卓手机设备投屏工具 工作室推荐
  • 记忆化搜索
  • 【乐企-工具篇】ofd转pdf(解决字体问题)