八大排序算法之插入排序

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

相关推荐
Tipriest_16 小时前
C++ 的 ranges 和 Python 的 bisect 在二分查找中的应用与实现
c++·python·算法·二分法
晨晖217 小时前
顺序查找:c语言
c语言·开发语言·算法
LYFlied17 小时前
【每日算法】LeetCode 64. 最小路径和(多维动态规划)
数据结构·算法·leetcode·动态规划
Salt_072817 小时前
DAY44 简单 CNN
python·深度学习·神经网络·算法·机器学习·计算机视觉·cnn
货拉拉技术17 小时前
AI拍货选车,开启拉货新体验
算法
MobotStone18 小时前
一夜蒸发1000亿美元后,Google用什么夺回AI王座
算法
Wang2012201318 小时前
RNN和LSTM对比
人工智能·算法·架构
xueyongfu18 小时前
从Diffusion到VLA pi0(π0)
人工智能·算法·stable diffusion
永远睡不够的入18 小时前
快排(非递归)和归并的实现
数据结构·算法·深度优先
cheems952718 小时前
二叉树深搜算法练习(一)
数据结构·算法