排序---希尔排序

烈酒焚心 提交于 2019-11-28 11:08:35

希尔排序可以说是插入排序的优化,算法的时间复杂度为O(nlogn),算法不稳定
在数字比较多的时候,希尔排序在不同的插入排序过程中,相同的元素可能在各自的插入排序中移动

void ShelSort(int *src, int n)
{
	int i, j, k;
	int gap, tmp;

	for (gap = n / 2; gap; gap /= 2)
	{
		for (k = 0; k < gap; k++)
		{
			for (i = gap + k; i < n; i += gap)
			{
				tmp = src[i];

				for (j = i; j >= gap && src[j - gap] > tmp; j -= gap)
				{
					src[j] = src[j - gap];
				}

				src[j] = tmp;
			}
		}
	}
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!