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原位置。繼續該步驟直到找到合適位置。


來自《演算法導論》(原書第三版)