八大排序算法之插入排序

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);排序稳定

相关推荐
希望有朝一日能如愿以偿几秒前
力扣每日一题:能被k整除的最小整数
数据结构·算法·leetcode
Controller-Inversion1 分钟前
力扣53最大字数组和
算法·leetcode·职场和发展
rit84324992 分钟前
基于感知节点误差的TDOA定位算法
算法
m0_372257026 分钟前
ID3 算法为什么可以用来优化决策树
算法·决策树·机器学习
q***252123 分钟前
SpringMVC 请求参数接收
前端·javascript·算法
数模加油站37 分钟前
25认证杯C题成品论文第一弹【冲奖硬核+无盲点解析】
算法·数学建模·认证杯·25认证杯
MobotStone41 分钟前
数字沟通之道
人工智能·算法
点云SLAM1 小时前
Boost库中Math 模块的插值(interpolation使用和示例
算法·插值·boost库·b-spline·akima 样条·单调三次样条·barycentric 插值
鸭子程序员1 小时前
c++ 算法
开发语言·c++·算法
Ghost-Face1 小时前
《逆袭导论》————初中生的宝书
算法