欢迎来到天天文库
浏览记录
ID:25492780
大小:98.00 KB
页数:9页
时间:2018-11-20
《实验3 内部排序算法比较》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据结构实验报告实验3存储管理查找和排序题目:内部排序算法比较09927104陈驰一.需求分析1.本演示对一下6种常见的内部排序算法进行测试比较:起泡排序,直接插入排序,简单选择排序,快速排序,堆排序,二路归并排序2.待排序表的有元素的关键字为整数。用随机数的数据比较各算法的关键字比较次数和关键字的移动次数。3.演示程序以用户和计算机的对话方式执行,即在计算机终端机上显示“提示信息”,用户可由键盘输入待排序表的长度。每次测试完毕,列表显示各种比较指标值。二.概要设计为实现上述操作,应以结构数组作为存储结构。基本操作:suiji()操作结果:在输入你想要排序的个数之后,随机生成,并
2、保存在结构数组中,接着进行各个排序2.本程序包含三个模块:(1)主程序模块(主要用来输出排序后的结果);(2)各个可排序单元模块;(3)用来实行控制排序的jiuji()函数模块。三.详细设计1.元素类型:typedefstruct{intkey;}datatype;2.每个模块的分析:(1)主函数模块intmain(){printf("----------------------");suiji();printf("比较结果");printf("排序方式比较次数移动次数");printf("直接%d%d",cn[0],mn[0]);printf("简单选择%d%d
3、",cn[1],mn[1]);printf("冒泡%d%d",cn[2],mn[2]);printf("推排序%d%d",cn[3],mn[3]);printf("二路归并%d%d",cn[4],mn[4]);printf("快速排序%d%d",cn[5],mn[5]);return0;}(1)控制各个排序方法的模块voidsuiji(){longi,n;datatypeR[MAXNUM]={0};////定义结构数组printf("请输入你要输入d个数");scanf("%d",&n);if(n>500000){printf("超出范围重新输入");
4、scanf("%d",&n);}for(i=1;i<=n;i++)R[i].key=rand()%1000;printf("排序前的元素顺序");for(i=1;i5、n);}(2)完整代码#include#include#include#defineMAXNUM10000longcn[MAXNUM],mn[MAXNUM];typedefstruct{intkey;}datatype;voidD_InsertSort(datatypeR[],longn)//直接排序{longi,j;for(i=2;i<=n;i++){cn[0]++;if(R[i].key6、=R[j];R[j+1]=R[0];mn[0]+=2;}}}voidSelect_Sort(datatypeR[],longn)//简单选择排序{longi,j,k;for(i=1;i7、+){cn[2]++;if(R[j].keyR[j].key)b
5、n);}(2)完整代码#include#include#include#defineMAXNUM10000longcn[MAXNUM],mn[MAXNUM];typedefstruct{intkey;}datatype;voidD_InsertSort(datatypeR[],longn)//直接排序{longi,j;for(i=2;i<=n;i++){cn[0]++;if(R[i].key6、=R[j];R[j+1]=R[0];mn[0]+=2;}}}voidSelect_Sort(datatypeR[],longn)//简单选择排序{longi,j,k;for(i=1;i7、+){cn[2]++;if(R[j].keyR[j].key)b
6、=R[j];R[j+1]=R[0];mn[0]+=2;}}}voidSelect_Sort(datatypeR[],longn)//简单选择排序{longi,j,k;for(i=1;i7、+){cn[2]++;if(R[j].keyR[j].key)b
7、+){cn[2]++;if(R[j].keyR[j].key)b
此文档下载收益归作者所有