直接插入排序:简单的插入排序

直接插入排序

当出入第i个元素的时候,前面的a[0], a[1]...a[i - 1]已经排好序了,此时用a[i]的排序码与之前的排序码顺序进行比较,好到适合插位置将array[i]插入,如下图:
在这里插入图片描述

实现代码如下:

void InsertSort(int* a, int n)
{
	for (int i = 0; i < n - 1; i++)
	{
		int cur = i + 1;//标记i的下一个数的下标
		while (cur)
		{
			if (a[cur - 1] > a[cur])//如果前一个数大于后一个数,交换两个数。
			{
				swap(a[cur - 1], a[cur]);
				cur--;//依次往后比
			}
			else
				break;
		}
	}
}

代码样例:

int main()
{
	int a[] = { 5, 2, 4, 6, 1, 3 };
	int n = sizeof(a) / sizeof(a[0]);
	InsertSort(a, n);
	for (auto e : a)
	{
		cout << e << " ";
	}
	system("pause");
	return 0;
}

运行代码:
在这里插入图片描述
特性总结:
1.元素越接近有序,运算时间越短。
2.时间复杂度O(n²)
3.空间复杂度O(1)
4.稳定性:稳定

猜你喜欢

转载自blog.csdn.net/l477918269/article/details/88550770
今日推荐