八大排序算法之插入排序

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

相关推荐
jiao0000138 分钟前
数据结构——队列
c语言·数据结构·算法
C-SDN花园GGbond43 分钟前
【探索数据结构与算法】插入排序:原理、实现与分析(图文详解)
c语言·开发语言·数据结构·排序算法
迷迭所归处2 小时前
C++ —— 关于vector
开发语言·c++·算法
leon6252 小时前
优化算法(一)—遗传算法(Genetic Algorithm)附MATLAB程序
开发语言·算法·matlab
CV工程师小林2 小时前
【算法】BFS 系列之边权为 1 的最短路问题
数据结构·c++·算法·leetcode·宽度优先
Navigator_Z3 小时前
数据结构C //线性表(链表)ADT结构及相关函数
c语言·数据结构·算法·链表
Aic山鱼3 小时前
【如何高效学习数据结构:构建编程的坚实基石】
数据结构·学习·算法
天玑y3 小时前
算法设计与分析(背包问题
c++·经验分享·笔记·学习·算法·leetcode·蓝桥杯
sjsjs113 小时前
【数据结构-一维差分】力扣1893. 检查是否区域内所有整数都被覆盖
数据结构·算法·leetcode
redcocal3 小时前
地平线秋招
python·嵌入式硬件·算法·fpga开发·求职招聘