八大排序算法之插入排序

1.算法思想:

从当前位置开始,从后往前找比当前数字小的,找到后插入到这个小的数字后面,在找的过程中,如果发现一个比当前数字大,同时将这个数字往后挪

2.举例说明:

2 5 7 9 11 1 3

以上数字中使用插入排序,首先从第1号位置,也就是5开始找比5小的数字,如果发现比这个数字大,将这个数字往后挪,如果比他小,就插入到这个数字后面。本例2比5小,5不动;接着是比较7,跟5同理,不动;接着是9,11,同理,不动;然后是1,11比1大,就将11往后挪,然后9比7大,将9往后挪,依次类推,直到找到比1小,本例1为最小的,直接插入到第一个;拍完后就变成1 2 5 7 9 11 3;然后3同理,排序后就成为1 2 3 5 7 9 11;

代码实现:

cpp 复制代码
void InsertSort(int* arr, int len)//直接插入排序
{
	int tmp,j;
	for (int i = 1; i < len; i++)
	{
		tmp = arr[i];
		for (j = i - 1; j >= 0; j--)
		{
			if (arr[j] > tmp)
			{
				arr[j + 1] = arr[j];
			}
			else
			{
				//arr[j+1] = tmp;
				break;
			}
		}
		arr[j + 1] = tmp;
	}
	
}

特点:

越有序越快,完全有序为O(n);排序稳定

相关推荐
Gorway2 小时前
解析残差网络 (ResNet)
算法
拖拉斯旋风3 小时前
LeetCode 经典算法题解析:优先队列与广度优先搜索的巧妙应用
算法
Wect3 小时前
LeetCode 207. 课程表:两种解法(BFS+DFS)详细解析
前端·算法·typescript
灵感__idea17 小时前
Hello 算法:众里寻她千“百度”
前端·javascript·算法
Wect1 天前
LeetCode 130. 被围绕的区域:两种解法详解(BFS/DFS)
前端·算法·typescript
NAGNIP2 天前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
颜酱2 天前
单调栈:从模板到实战
javascript·后端·算法
是希燃亚2 天前
📚 十大经典排序算法 C语言笔记(一看就会版)
排序算法
CoovallyAIHub2 天前
仿生学突破:SILD模型如何让无人机在电力线迷宫中发现“隐形威胁”
深度学习·算法·计算机视觉
CoovallyAIHub2 天前
从春晚机器人到零样本革命:YOLO26-Pose姿态估计实战指南
深度学习·算法·计算机视觉