希尔排序:
希尔排序是在直接插入排序的基础上的改进版,它的基本思想是:先将整个待排序记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序时”,再对全体记录进行一次直接插入排序。
代码实现:
说明:本博客的代码实现贴近数据结构(C语言版) 课本代码风格,使用抽象数据类型。
项目结构

以下文件代码与直接插入排序时所用相同,为避免大量代码重复此处不再附上。
详情可参考直接插入排序:https://blog.csdn.net/ZipayYu/article/details/98245056
status.h
ststus.cpp
SequenceListType.h
SequenceListType.cpp
希尔排序的实现方式一
本部分是按照课本所示代码实现,对子序列分别进行直接插入排序。
/************************************
* 函数名称: ShellInsert
* 函数说明: 对顺序表做一趟希尔插入排序
* 编写人员: Zipay Yu
* 编写日期: 2019/08/05
* 返回类型: void
* 函数参数: SqList & L 待排序顺序表
* 函数参数: int dk 排序增量
*************************************/
void ShellInsert(SqList &L,int dk) {
int i,j;
for (i=dk+1;i<=L.length;++i)
{
if (LT(L.r[i].key, L.r[i - dk].key)) {
//将L.r[i]插入有序增量子表
L

希尔排序是一种改进的插入排序算法,通过设置间隔序列来优化排序过程。本博客介绍了希尔排序的基本思想,并提供了两种C语言实现方式,包括按照课本方式实现的版本和一种简化循环条件的版本。同时,博客中包含了一个data.txt文件用于测试排序效果。

626

被折叠的 条评论
为什么被折叠?



