內部排序算法之希爾排序

希爾排序是在簡單插入排序上做了改進。待排序系列長度記爲N,增量d一般取從N/2, N/4, N/8...到1的序列。希爾增量的選取決定了排序的效率。將待排序系列中,元素下標間距爲d的所有元素分爲一組, 對每組進行簡單插入排序。當d減少到等於1使,最後做一次簡單插入排序。

如果對簡單插入排序很熟悉,實現希爾排序難度不大

int shell_sort(int *p, int n)
{
	int d, i, j, k;

	for(d=n/2; d>0; d/=2)
	{
		for(i=d; i<n; i+=d)
		{
			k = p[i];
			j=i-d;
			while(j>=0 && p[j]>k)
			{
				p[j+d] = p[j];
				j-=d;
			}

			p[j+d] = k;
		}
	}
}
希爾排序的效率優於O(n^2)的算法,差於O(n*lgn)的算法。最差情況和最好情況效率相差不大。中小型規模可以先用該排序算法。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章