当前位置: 首页 > 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/news/311614.html

相关文章:

  • 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(解决字体问题)
  • Exchange Online 计划 2 部署方案
  • 基于SSM的宿舍管理系统的设计与实现 (含源码+sql+视频导入教程+文档+PPT)
  • 代码随想录算法训练营第51天 | 岛屿数量、岛屿的最大面积
  • 简单说说MySQL中 SELECT 语句执行流程
  • 最新动态一致的文生视频大模型FancyVideo部署
  • 【MySQL】MySQL 在 Centos 7环境安装
  • Hive自定义函数——简单使用
  • C#广泛应用的简洁匿名函数Lambda 表达式
  • 基于Python的自然语言处理系列(12):使用TorchText和LSTM进行序列到序列(seq2seq)翻译
  • LVGL 控件之仪表盘(lv_meter)