C++ 希尔排序(插入排序改进版)

希尔排序:是插入排序的一种优化版。对于插入排序或者冒泡排序,如果数组的最大值刚好是在第一位,要将它挪到正确的位置就需要 n - 1 次移动。也就是说,原数组的一个元素如果距离它正确的位置很远的话,则需要与相邻元素交换很多次才能到达正确的位置。希尔排序加快了交换速度,交换不相邻的元素以对数组的局部进行排序。

// 希尔排序(插入排序的改进版)
void ShellSort(int arr[],int length)
{
	if (arr == nullptr || length <= 0)
	{
		return;
	}
	for (int gap = length/2; gap > 0; gap/=2)   // 划分间隔大小
	{
		for (int i = gap; i < length; i++)     
		{
			int temp = arr[i];
			int k = i;
			for (int j = i-gap; j >= 0; j = j-gap)
			{
				if (temp < arr[j])
				{
					arr[j + gap] = arr[j];
					k = j;
				}
			}
			arr[k] = temp;
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值