- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
排序算法应用(直接法、插入法、shell排序)
计算机软件技术基础(VC)课程设计报告
一、题目:
排序算法应用二(直接法、插入法、shell排序)10
二、设计思路
1、总体设计
1)分析程序的功能
实现的功能是将一组无序数列通过排序使其成为有序数列。分别使用直接法,插入法,shell法进行排序,并统计排序次数以及比较三种排序法的优劣。
2)系统总体结构:设计程序的组成模块,简述各模块功能。
本程序由主函数,赋值函数,插入法函数,直接法函数,shell法函数五部分构成,主函数负责串联整个程序,各个分函数实现排序功能,并返回排序次数。
2、各功能模块的设计:说明各功能模块的实现方法
主函数将各个分函数串联成为整个程序,经过函数调用,各个分函数实现排序功能。并将排序次数返回给主函数。
3、设计中的主要困难及解决方案
在这部分论述设计中遇到的主要困难及解决方案。
1)困难1:将三种排序结果一起输出,而只进行一次输入。
解决方案:将输入的数组进行备份,存到一单独的数组中,每次排序完成后,将数组还原,然后再进行下一种排序。
2)困难2:使用赋值函数进行赋值。
解决方案:新建一个源文件,将赋值函数编译在里面,然后再主函数中进行调用。
4、你所设计的程序最终完成的功能
1)说明你编制的程序能完成的功能
实现的功能是将一组无序数列通过排序使其成为有序数列。并统计排序次数,比较优劣。
2)准备的测试数据及运行结果
准备的测试数据 12 32 6 98 44 55 225 36
运行结果
三、程序清单
1、shell法.cpp文件清单
int shell(int a[],int n)
{
int t,m,e=0;
for(int H=5;H0;H--)
{
m=1;
while(m!=0)
{
m=0;
for(int I=0;In-H;I++)
{
if(a[I]a[I+H])
{
e+=1;
t=a[I];
a[I]=a[I+H];
a[I+H]=t;
m+=1;
}
}
}
}
return e;
}
2、插入法.cpp文件清单
int charu(int a[],int n)
{
int i,j,t,c=0;
for(i=1;in;i++)
{
t=a[i];
for(j=i-1;j=0a[j]t;j--)
{
a[j+1]=a[j];
c+=1;
}
a[j+1]=t;
}
return c;
}
3、赋值.cpp文件清单
#includeiostream.h
void fuzhi(int a[],int n)
{
cout输入n个数:endl;
for(int i=0;in;i++)
{
int j=i+1;
cout请输入第j个数:;
cina[i];
}
}
4、排序.cpp文件清单
#includeiostream.h
#includefile.h
void main()
{
int a[50],b[50];
int n,c,d,e,i;
cout输入数据个数:;
cinn;
fuzhi(a,n);
for(i=0;in;i++)
b[i]=a[i];
e=shell(a,n);
coutendl;
coutShell排序法排序后为:endl;
for(i=0;in;i++)
couta[i]\t;
coutendl排序次数为:eendl;
for(i=0;in;i++)
a[i]=b[i];
d=zhijie(a,n);
coutendlendl;
cout直接排序法排序后为:endl;
for(i=0;in;i++)
couta[i]\t;
coutendl排序次数为:dendl;
for(i=0;in;i++)
a[i]=b[i];
c=charu(a,n);
coutendlendl;
cout插入排序法排序后为:endl;
for(i=0;in;i++)
couta[i]\t;
coutendl排序次数为:cendl;
}
5.直接法.cpp文件清单
int zhijie(int a[],int n)
{
int t,d=0;
for(int w=0;wn-1;w++)
{
for(int i=w+1;in;i++)
{
if (a[w]a[i])
{
d+=1;
t=a[w];
a[w]=a[i];
a[i]=t;
}
文档评论(0)