您所在位置: 网站首页 / 希尔排序代码.doc / 文档详情
希尔排序代码.doc 立即下载
2024-09-05
约1.4千字
约4页
0
27KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

希尔排序代码.doc

希尔排序代码.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

#include<stdio.h>
typedefintInfoType;//定义其它数据项的类型

#defineMAXSIZE20//一个用作示例的小顺序表的最大长度
typedefintKeyType;//定义关键字类型为整型
//c9.h对两个数值型关键字的比较约定为如下的宏定义

//c10-1.h待排记录的数据类型

structRedType//记录类型
{
KeyTypekey;//关键字项
InfoTypeotherinfo;//其它数据项,具体类型在主程中定义
};
#defineEQ(a,b)((a)==(b))
#defineLT(a,b)((a)<(b))
#defineLQ(a,b)((a)<=(b))
structSqList//顺序表类型
{
RedTyper[MAXSIZE+1];//r[0]闲置或用作哨兵单元
intlength;//顺序表长度
};

voidShellInsert(SqList&L,intdk)
{//对顺序表L作一趟希尔插入排序。本算法是和一趟直接插入排序相比,
//作了以下修改:
//1.前后记录位置的增量是dk,而不是1;
//2.r[0]只是暂存单元,不是哨兵。当j<=0时,插入位置已找到。算法10.4
inti,j;
for(i=dk+1;i<=L.length;++i)
ifLT(L.r[i].key,L.r[i-dk].key)
{//需将L.r[i]插入有序增量子表
L.r[0]=L.r[i];//暂存在L.r[0]
for(j=i-dk;j>0&&LT(L.r[0].key,L.r[j].key);j-=dk)
L.r[j+dk]=L.r[j];//记录后移,查找插入位置
L.r[j+dk]=L.r[0];//插入
}
}

voidprint(SqListL)
{
inti;
for(i=1;i<=L.length;i++)
printf("%d",L.r[i].key);
printf("\n");
}

voidprint1(SqListL)
{
inti;
for(i=1;i<=L.length;i++)
printf("(%d,%d)",L.r[i].key,L.r[i].otherinfo);
printf("\n");
}

voidShellSort(SqList&L,intdlta[],intt)
{//按增量序列dlta[0..t-1]对顺序表L作希尔排序。算法10.5
intk;
for(k=0;k<t;++k)
{
ShellInsert(L,dlta[k]);//一趟增量为dlta[k]的插入排序
printf("第%d趟排序结果:",k+1);
print(L);
}
}

#defineN10
#defineT3
voidmain()
{
RedTyped[N]={{49,1},{38,2},{65,3},{97,4},{76,5},{13,6},{27,7},{49,8},{55,9},{4,10}};
SqListl;
intdt[T]={5,3,1};//增量序列数组
for(inti=0;i<N;i++)
l.r[i+1]=d[i];
l.length=N;
printf("排序前:");
print(l);
ShellSort(l,dt,T);
printf("排序后:");
print1(l);
}
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

希尔排序代码

文档大小:27KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用