- 11
- 0
- 约4.85千字
- 约 6页
- 2017-05-18 发布于江西
- 举报
数据结构课程设计(排序方法的研究)
排序方法的研究
一.设计目的
熟悉几种常用的排序方法,并从时间上作定性或定量的分析和比较,同时掌握对模块化程序的设计思想。
二.设计内容
对1000个随机数用下列几种方法进行排序。
插入排序
直接排序
折半插入
希尔排序
快速排序
起泡排序
快速排序
选择排序
简单排序
堆排序
归并排序
基数排序(选做内容)
(*本报告选做了第3和4两种方法对数据进行排序*)
三.设计要求
以菜单的形式提示各排序方法,由操作者进行排序。从主菜单进入子菜单,输入选项进行排序,输出结果,进而对输出结果作出检查。程序要规格化,
四.算法及流程图
简单选择排序
通过n-i次关键字的比较,从n-i+1个记录中选出关键字最小的记录,并和第i (1=i=n)个记录交换之。
C语言算法描述:
Void SelectSort(SqListL){//对顺序表L作简单选择排序
for(i=1;IL.length;++i){//选择第i小的记录,并交换到位
j=SelectMinKey(L,i);//在L.r[i..L.length]中选择Key最小的记录
if(i!=j) L.r[i]←→L.r[j]//与第个记录交换
}}//SelectSort
堆排序
C语言算法描述:
Typedef SqList HeapType; //堆采用顺序表存储表示
Void HeapAdjust(HeapType H,int S,int m){
//已知H.r[s..m]中记录的关键字除H.r[s].key之外均满足堆的定义//本函数调整
// H.r[s]的关键字,使H.r[s..m]成为一个大顶堆//(对其中记录的关键字而言)
rc=H.r[s];
For(j=2*s;I=m;j*=2){ //沿key较大的孩子结点向筛选
If(jmLT(H.r[j].key,H.r[j+1].key))++j;//为key较大的记录的下标
if(!LT(rc.key,H.r[j].key)) break;//rc应插入在位置s上
H.r[s]=H.r[j];s=j;
}
H.r[s]=rc;
}//HeapAdjust
void HeapSort(HeapType H){//对顺序表进行排序
for(I=H.length/2;i0;--i) //把H.r[1..H.length]建成大顶堆
HeapAdjust(H,I,H.length);
For(I=H.length;I1;--i){
H.r[1]H.r[i];//将堆顶记录和当前未经排序子序列H.r[1..j]中
//最后一个记录相互交换
HeapAdjust(H,1,I-1); //将H.r[1..j]重新调整为大顶堆
}}//HeapSort
归并排序
C语言算法描述:
Void Merge(RcdType SR[],RcType TR[],int I,int m,int n){
//将有序的SR[i..m]和SR[m+1.. n]归并为有序的TR[i.. n]
for(j=m+1,k=i;I=mj=n;++k){//将SR中记录由小到大的顺序并入TR
if LQ(SR[i].key,SR[j].key) TR[k]=SR[I++];
else TR[k]=SR[j++];
}
if(i=m) TR[k.. n]=SR[i.. m];//将剩余的SR[j.. m]复制到TR
if(j=n) TR[k.. n]=SR[i.. n];// 将剩余的SR[j.. n] 复制到TR
}//Merge
void Msort (RecType SR[],RcdType TR1[],int s,int t) {//将SR[S..t]归并排序为TR1[S.. t]
if(S==t) TR1[S]=SR[s];
else {m=(s+t)/2;//将SR[s.. t]平分为SR[s.. m]和SR[m+1..t]
Msort(SR,TR2,s,m);//递归地将SR[s..M] 归并为有序的TR2[s.. m]
Msort(SR,TR2,m+1,t);//递归地将SR[m+1.. t] 归并为有序的TR2[m+1.. t]
Merge(TR2,TR!,s,m,t);//将TR2[s.. m]和TR2[m+1..T]归并到TR1[s.. t]
}}//MSort
void MergeSort (SqList L) {//对顺序表L作归并排序
Msort(L.r,L.r,L.length);
}//MergeSort
五.流程图和输入数据及输出结果
(以下四幅图为:主菜单和选择排序的子菜单;简单选择排序运行结果;堆排序运行结果;主菜单和归并排序运行结果)
(由于摘图需要,本报告将1000个随机数换为10个,便于查看)
六.程序清单
#i
您可能关注的文档
- 担保资料-担保机构风险评审和项目管理.ppt
- 拆迁许可证书面申请.doc
- 拉丁语(拉丁语教学).ppt
- 拓新科技第八年年度计划.doc
- 拼音直接教學法第二段.ppt
- 拼音复习 - PowerPoint Presentation.ppt
- 招聘和筛选的程序.ppt
- 振动的检测及传感器.ppt
- 捞渣机数据采集说明书.doc
- 掌握技巧减肥 越减越开心.doc
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
最近下载
- 介绍楚门的世界.pptx VIP
- 2025年拍卖师市场饱和度与竞争红海中的差异化突围策略分析专题试卷及解析.pdf VIP
- 2025年互联网营销师商业谈判与供应链管理能力专题试卷及解析.pdf VIP
- 2025年化工工程师多搅拌器串联与并联系统操作优化专题试卷及解析.pdf VIP
- 2025年拍卖师农产品拍卖拍卖师竞买人购买反馈专题试卷及解析.pdf VIP
- 2025年AWS认证AmazonRDS只读副本的只读副本的只读副本在主实例故障后的角色切换专题试卷及解析.pdf VIP
- 法律职业资格(主观题)真题答案解析2025.docx VIP
- 12J926-无障碍设计标准图集.pdf VIP
- 导弹的总体设计(西工大课件).pdf VIP
- 2025年演出经纪人演出经营许可证申领与年检专题试卷及解析.pdf VIP
原创力文档

文档评论(0)