数据结构课程设计排序实验报告.docx
- 文档编号:11180131
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:11
- 大小:287.33KB
数据结构课程设计排序实验报告.docx
《数据结构课程设计排序实验报告.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计排序实验报告.docx(11页珍藏版)》请在冰豆网上搜索。
数据结构课程设计排序实验报告
《数据结构》
课程设计报告
专业
班级
姓名
学号
指导教师
起止时间
课程设计:
排序综合
一、任务描述
利用随机函数产生n个随机整数(20000以上),对这些数进行多种方法进行排序。
(1)至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。
并把排序后的结果保存在不同的文件中。
(2)统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。
要求:
根据以上任务说明,设计程序完成功能。
二、问题分析
1、功能分析
分析设计课题的要求,要求编程实现以下功能:
(1)随机生成N个整数,存放到线性表中;
(2)起泡排序并计算所需时间;
(3)简单选择排序并计算时间;
(4)希尔排序并计算时间;
(5)直接插入排序并计算所需时间;
(6)时间效率比较。
2、数据对象分析
存储数据的线性表应为顺序存储。
三、数据结构设计
使用顺序表实现,有关定义如下:
typedefintStatus;
typedefintKeyType;直接插入排序
0.退出系统
(二)程序模块结构
由课题要求可将程序划分为以下几个模块(即实现程序功能所需的函数):
主控菜单项选择函数menu()
创建排序表函数InitList_Sq()
起泡排序函数Bubble_sort()
简单选择排序函数SelectSort()
希尔排序函数ShellSort();
对顺序表L进行直接插入排序函数Insertsort()
(三)函数调用关系
程序的主要结构(函数调用关系)如下图所示。
其中main()是主函数,它负责调用各函数。
进行调用菜单函数menu(),根据选择项0~4调用相应的函数。
main()函数使
for循环实现重复选择。
其循环结构如下:
for(;;)
{
longstart,end;
switch(menu())
{
case1:
printf("*起泡排序*\n");
start=clock();
Bubble_sort(L);
end=clock();
printf("%dms\n",end-start);
fp=fopen("D:
起泡排序.txt","w");
if(fp==NULL)xt","w");
if(fp==NULL)xt","w");
if(fp==NULL)xt","w");
if(fp==NULL)ey=rand()%30001+1;
fp=fopen("D:
构造一个线性表.txt","w");
if(fp==NULL)
ey,[j].key))
{
flag=1;共通过n-1趟,得到一个按排序码从小到大排列的有序序列
流程图:
代码描述:
voidSelectSort(SqList&L)
{]中选择key最小的记录
intk=i;
for(intj=i+1;j<=;j++)
if(LT[j].key,[k].key))k=j;
if(k!
=i){
x=[i];
[i]=[j];
[j]=x;
}
}
}ey,[i-dk].key))
{
[0]=[i];
intj;
for(j=i-dk;(j>0)&&(LT[0].key,[j].key));j-=dk)
[j+dk]=[j];
[j+dk]=[0];
}
}
}
voidShellSort(SqList&L,intdlta[],intt)
{
ey,[i-1].key))ey,[j].key);j--)
[j+1]=[j];
ey的元素
[j+1]=[0];//将暂存在r[0]中的记录插入到正确位置
}
//printf("%d",[i]);
}
算法的时间复杂度分析:
O(n2)
五、测试数据和结果
1、测试数据
随机产生30000个数
2、测试结果
本程序在VC++环境下实现,下面是对以上测试数据的运行结果。
(1)主菜单显示如下:
六、结束语
本设计完成了课题要求的任务,较熟练地掌握了各种排序方法。
在设计过程中,由于个别代码段设计不当多次出现程序溢出情况。
在评判各种排序方法的用时上换了两种计时方法,现在使用的这个较为准确。
从结果可以看出,堆排序和快速排序这两种方法最快。
当然或许还有更快的排序方法,此处没有使用并列举出来。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 排序 实验 报告