学习算法导论——插入排序

插入排序和排序一手扑克牌相似,假设桌面上有一些牌,我们用右手拿起一张,从右到左与左手的牌对比,插入正确位置,如图。左手中的牌总是排好序的,如果是第一张牌,直接放到左手即可。

学习算法导论——插入排序_第1张图片

C++代码:

void Insertion_Sort(int A[],int len)
{
	int key;
	int i;
	for (int j = 1; j < len; ++j)
	{
		key = A[j];
		i = j - 1;
		while (i>=0 && A[i] > key)
		{
			A[i + 1] = A[i];
			A[i] = key;
			i = i - 1;
		}
	}
}
A[0]是第一张牌,所以for循环从1开始,一张一张拿起桌面的牌,然后while循环将该牌与左手的牌对比(从右到左),如果左手的牌P比要插入的牌C大,左手的牌P往后移一位并将牌C插入牌P原位置。继续该步骤直到找到合适位置。



来自《算法导论》(原书第三版)

你可能感兴趣的:(学习算法导论——插入排序)