插入排序详解

思路

把后面的值(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;
	}
}
相关推荐
柠檬少少开发19 分钟前
碎纸片的自动拼接复原技术
人工智能·算法·计算机视觉
2401_857297911 小时前
招联金融秋招内推喇--18薪
java·前端·算法·金融·求职招聘
TT哇1 小时前
【数据结构】经典题
数据结构
larryyu_cs1 小时前
CF1494F Delete The Edges 题解
c++·算法·图论
王俊山IT1 小时前
C++学习笔记----7、使用类与对象获得高性能(二)---- 理解对象生命周期(7)
开发语言·c++·笔记·学习
BUG制造机.2 小时前
计算机网络 --- Socket 编程
服务器·c++·计算机网络
城南vision2 小时前
算法题总结(三)——滑动窗口
数据结构·算法
Jurio.2 小时前
【JPCS出版】第二届应用统计、建模与先进算法国际学术会议(ASMA2024,9月27日-29)
大数据·人工智能·深度学习·算法·机器学习·数学建模
严文文-Chris2 小时前
【算法-基数排序】
数据结构·算法·排序算法
Mephisto.java2 小时前
【数据结构与算法 | 灵神题单 | 自底向上DFS篇】力扣965, 2331, 100, 1379
算法·leetcode·深度优先