栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

数据结构初阶--希尔排序

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构初阶--希尔排序

 1.基本思想

希尔排序又称缩小增量法。基本思想是先选定一个整数,把待排序的数据分成几个组,对每一组的记录进行排序。重复分组和排序的工作,直到所有数据在一组内排好序。

2.希尔排序的特性
  • 希尔排序是对直接插入排序的优化
  • 当gap > 1时是预排序,使数组更接近有序。当GAP == 1时,数组已经接近有序,此时相当于直接插入排序。
  • 希尔的时间复杂度难以计算。当增量序列为时,希尔排序的时间复杂度为,其中t为排序趟数,.
  • 当n在特定范围内时,希尔排序所用的次数约为,当时,可以减少到
 3.代码实现
void ShellSort(int* a, int n)
{
	//gap > 1时预排序,使数组接近有序
	//gap为1时,直接插入排序
	int gap = n;


	while (gap > 1)
	{
		gap = gap / 3 + 1;


		for (int i = gap; i < n - gap; i++)
		{
			int end = i;
			int tmp = a[gap + end];


			while (end >= 0)
			{
				if (tmp < a[end])
				{
					a[end + gap] = a[end];
					end -= gap;
				}
				else
				{
					break;
				}
			}
			a[end + gap] = tmp;
		}
	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1004248.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号