数据结构插入排序

核心思想:假设排升序

1.先把一个数用临时变量存起来

2.拿数组中所以元素去比较,下标位置比临时变量大的就把大的数向后移,直到遇到比临时变量小的数,直接插入在这个数的后面。

代码

//插入排序
//时间复杂度:O(N^2)
//空间复杂度:O(1)
void InterSort(int* a, int n)
{
	assert(a);
	for (int i = 0; i < n - 1; i++)//控制趟数
	{
		//把end+1的数据插入到[0,end]的有序区间
		int end = i ;
		int temp = a[end + 1];
		while (end >= 0)//单趟排序
		{
			if (temp < a[end])//后一个小于前一个
			{
				a[end + 1] = a[end];//就把前一个值给后一个下标的位置
				--end;//下标再--
			}
			else
			{
				break;//不满足就跳出当前循环
			}
		}
		a[end + 1] = temp;//把temp给到前一个下标的位置
	}
}

代码演示

数据结构插入排序_第1张图片

动图示范

数据结构插入排序_第2张图片

你可能感兴趣的:(算法)