插入排序详解

思路

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

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

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

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

代码

cpp 复制代码
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;
	}
}
相关推荐
oioihoii17 小时前
C++程序执行起点不是main:颠覆你认知的真相
开发语言·c++
初级炼丹师(爱说实话版)17 小时前
多进程与多线程的优缺点及适用场景总结
算法
hetao173383717 小时前
2025-11-25~26 hetao1733837的刷题记录
c++·算法
历程里程碑18 小时前
各种排序法大全
c语言·数据结构·笔记·算法·排序算法
u***u68518 小时前
C++在系统中的异常处理
java·开发语言·c++
少许极端18 小时前
算法奇妙屋(十四)-简单多状态dp问题
算法·动态规划·图解算法·简单多状态dp·打家劫舍问题·买卖股票问题全解
4***R24018 小时前
C++在音视频处理中的库
开发语言·c++·音视频
2301_8234380218 小时前
解析论文《复杂海上救援环境中无人机群的双阶段协作路径规划与任务分配》
人工智能·算法·无人机
周一上线19 小时前
EDA 中的 DRC检测——并查集优化mincut规则检测
c++·eda·经验·工艺
embrace9919 小时前
【C语言学习】结构体详解
android·c语言·开发语言·数据结构·学习·算法·青少年编程