C语言浙大版)小白实现Sedgewick希尔排序并分析(附测试用例)

本博文源于浙江大学《数据结构》,今天跟着姥姥学希尔排序。课程上面,希尔排序的囧态是这样子的:
在这里插入图片描述
就因为绕来绕去还不忘回到本质一个插入排序搞定,导致如何定义增量序列是一个极大的问题,下面我就讨论由希尔排序引申出来的Sedgewick希尔排序,如果大家对希尔排序源码还不是很了解,可以看这个博文:
(C语言浙大版)小白实现希尔排序并分析增量序列(附测试用例)
然后下面进行分析!

原始希尔排序原理

就是将待排序的一组元素按一定间隔分为若干个序列,分别进行插入排序。开始时设置的间隔较大,然后逐步减小,等到1的时候就变成插入排序。

Sedgewick增量序列

在这里插入图片描述
就是这玩意,看起来会手足无措,其实这个增量序列是靠公式来生成的。只需要把i=0,1,2,3…带进去让程序自己生成就行了,然后根据我们排序的数量,让Sedgewick序列不超过要排列的数列就行了。然后按照希尔排序的老样子进行排序就可以实现Sedgewick增量序列的排序

测试用例

int arr[5] = {5,3,1,6,2};

整型数组只是容器,5也只是数字,可以由自己来进行变动。

附上源码

//Sedgewick增量序列的希尔排序
//希尔排序
#include<stdio.h>
typedef int ElementType;
void Print_Array(ElementType A[],int N)
{
	printf("\n");
	for(int i=0;i<N;i++)
		printf("%d ",A[i]);
}

void Shell_sort(ElementType A[], int N)
{
	int Si,D,P,i;
	ElementType Tmp;
	int Sedgewick[] = {929,505,209,109,41,19,5,1,0};
	
	for(Si = 0;Sedgewick[Si]>=N;Si++) ;
	
	for(D=Sedgewick[Si];D>0;D=Sedgewick[++Si])
		for(P=D;P<N;P++) {
			Tmp = A[P];
			for(i=P;i>=D && A[i-D]>Tmp;i-=D)
				A[i] = A[i-D];
			A[i] = Tmp;
		}
}
int main()
{
	int arr[5] = {5,3,1,6,2};
	Print_Array(arr,5);
	Shell_sort(arr,5);
	Print_Array(arr,5);
	return 0;
	
}
本资源压缩包分为两卷,此卷为第1卷。   本书细腻讲解计算机算法的c语言实现。全书分为四部分,共16章。包括基本算法分析原理,基本数据结构、抽象数据结构、递归和树等数据结构知识,选择排序、插入排序、冒泡排序、希尔排序、快速排序方法、归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊用途的排序方法,并比较了各种排序方法的性能特征,在进一步讲解符号表、树等抽象数据类型的基础上,重点讨论散列方法、基数搜索以及外部搜索方法。书中提供了用c语言描述的完整算法源程序,并且配有丰富的插图和练习,还包含大量简洁的实现将理论和实践成功地相结合,这些实现均可用在真实应用上。.    本书内容丰富,具有很强的实用价值,适合作为高等院校计算机及相关专业本科生算法课程的教材,也是广大研究人员的极佳参考读物。    本书是sedgewick彻底修订和重写的c算法系列的第一本。全书分为四部分,共16章。第一部分“基础知识”(第1~2章)介绍基本算法分析原理。第二部分“数据结构”(第3~5章)讲解算法分析中必须掌握的数据结构知识,主要包括基本数据结构、抽象数据结构、递归和树。第三部分“排序”(第6~11章)按章节顺序分别讨论基本排序方法(如选择排序、插入排序、冒泡排序、希尔排序等)、快速排序方法、归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊用途的排序方法,并比较了各种排序方法的性能特征。第四部分“搜索”(第12~16章) 在进一步讲解符号表、树等抽象数据类型的基础上,重点讨论散列方法、基数搜索以及外部搜索方法。..
本资源压缩包分为两卷,此卷为第2卷。   本书细腻讲解计算机算法的c语言实现。全书分为四部分,共16章。包括基本算法分析原理,基本数据结构、抽象数据结构、递归和树等数据结构知识,选择排序、插入排序、冒泡排序、希尔排序、快速排序方法、归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊用途的排序方法,并比较了各种排序方法的性能特征,在进一步讲解符号表、树等抽象数据类型的基础上,重点讨论散列方法、基数搜索以及外部搜索方法。书中提供了用c语言描述的完整算法源程序,并且配有丰富的插图和练习,还包含大量简洁的实现将理论和实践成功地相结合,这些实现均可用在真实应用上。.    本书内容丰富,具有很强的实用价值,适合作为高等院校计算机及相关专业本科生算法课程的教材,也是广大研究人员的极佳参考读物。    本书是sedgewick彻底修订和重写的c算法系列的第一本。全书分为四部分,共16章。第一部分“基础知识”(第1~2章)介绍基本算法分析原理。第二部分“数据结构”(第3~5章)讲解算法分析中必须掌握的数据结构知识,主要包括基本数据结构、抽象数据结构、递归和树。第三部分“排序”(第6~11章)按章节顺序分别讨论基本排序方法(如选择排序、插入排序、冒泡排序、希尔排序等)、快速排序方法、归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊用途的排序方法,并比较了各种排序方法的性能特征。第四部分“搜索”(第12~16章) 在进一步讲解符号表、树等抽象数据类型的基础上,重点讨论散列方法、基数搜索以及外部搜索方法。..
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值