對於某個特定的場景,最快的排序算法可能與許多因素有關:例如關鍵值和衛星數據的先驗知識,主機存儲器的層次結構(高速緩存和虛擬存儲)以及軟件環境。算法
插入排序緩存
插入排序對於少許待排元素仍是比較有效率的排序算法。其工做原理相似打牌:當開始抓牌時,左手中(右撇子哈)開始摸牌是空的,牌面朝下放在桌上。接着,一次從桌上摸起一張牌,並將它插入到左手一把牌中的正確位置上。爲了找到這張牌的正確位置,要將它與手中已有的每一張牌從右到左地進行比較,不管在何時,左手中的牌都是排好序的。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插入其中。排序
代碼以下: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; }