算法學習筆記(2)---插入排序

對於某個特定的場景,最快的排序算法可能與許多因素有關:例如關鍵值和衛星數據的先驗知識,主機存儲器的層次結構(高速緩存和虛擬存儲)以及軟件環境。算法

  1. 插入排序緩存

    插入排序對於少許待排元素仍是比較有效率的排序算法。其工做原理相似打牌:當開始抓牌時,左手中(右撇子哈)開始摸牌是空的,牌面朝下放在桌上。接着,一次從桌上摸起一張牌,並將它插入到左手一把牌中的正確位置上。爲了找到這張牌的正確位置,要將它與手中已有的每一張牌從右到左地進行比較,不管在何時,左手中的牌都是排好序的。spa

    具體實現爲:code

        p[0...i-1]已排完序,p[i...n]爲待排序。接下來將a[i]插入p[0...i-1]中,設置哨兵key=a[i],將key逐個與a[0...i-1]中比較,若是a[j]>key則將a[j]向後推進一位,直到找到a[j]<=key,將key插入其中。排序

  1. 代碼以下:class

int sort(int *p, int n)
{
	int i,j;
	for (j=1; j<n; j++)
	{
		int key = p[j];
		i = j - 1;
		while (i>=0 && p[i] > key)
		{
			p[i+1] = p[i];
			i--;
		}
		p[i+1] = key;
	}
	return 0;
}
相關文章
相關標籤/搜索