ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:290.58KB ,
资源ID:18512128      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18512128.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计报告排序实验报告Word格式文档下载.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计报告排序实验报告Word格式文档下载.docx

1、 存储数据的线性表应为顺序存储。三、数据结构设计使用顺序表实现,有关定义如下:typedef int Status;typedef int KeyType ; /设排序码为整型量typedef int InfoType;typedef struct /定义被排序记录结构类型KeyType key ; /排序码 I nfoType otherinfo; /其它数据项 RedType ; typedef struct RedType * r; /存储带排序记录的顺序表 /r0作哨兵或缓冲区 int length ; /顺序表的长度 SqList ; /定义顺序表类型四、功能设计(一)主控菜单设计为

2、实现通各种排序的功能,首先设计一个含有多个菜单项的主控菜单程序,然后再为这些菜单项配上相应的功能。程序运行后,给出5个菜单项的容和输入提示,如下:1.起泡排序2.简单选择排序3.希尔排序4. 直接插入排序0. 退出系统(二)程序模块结构由课题要求可将程序划分为以下几个模块(即实现程序功能所需的函数):主控菜单项选择函数menu()创建排序表函数 InitList_Sq()起泡排序函数Bubble_sort()简单选择排序函数SelectSort()希尔排序函数ShellSort();对顺序表L进行直接插入排序函数Insertsort()(三)函数调用关系程序的主要结构(函数调用关系)如下图所示

3、。其中main()是主函数,它负责调用各函数。进行调用菜单函数menu(),根据选择项04调用相应的函数。main()函数使for循环实现重复选择。其循环结构如下:for (;) long start,end; switch(menu() case 1: printf(* 起泡排序 *n); start=clock(); Bubble_sort(L); end=clock();%d msn,end-start); fp=fopen(D: 起泡排序 .txt,w if(fp=NULL)/打开文件失败 printf(打开文件失败!n exit(1); for(i=1;i=L.length;i+)

4、fprintf(fp,%d ,L.ri); fclose(fp); break; case 2:* 简单选择排序 *n SelectSort(L);直接插入排序.txt简单选择排序! case 3:* 希尔排序 *n ShellSort(L,an,14);希尔排序 .txt case 4:* 直接插入排序 *n Insertsort(L); case 0:t 退 出 ! return ; (四)文件结构1、sort.h:单链表相关的定义与声明2、sort.cpp:单链表运算的实现3、menu.h:主菜单函数的声明4、menu.cpp:主菜单函数的实现5、mn.cpp:主函数 (五)各函数的算法

5、设计1、InitList_Sq()算法原理:数组指针r指示线性表的基址,length指示线性表的当前长度,将随机生成的数赋给线性表,并生成相应文件。流程图: 开始申请存 随机生成30000个数字生成文件 Fp=NULL 将顺序表打印到文件 终止程序 关闭文件 结束 代码描述:Status InitList_Sq(SqList &L) /构造一个线性表 FILE *fp; L.r=(RedType *) malloc(LIST_INIT_SIZE*sizeof(RedType); if (! L.r) exit(OVERFLOW); /存储分配失败 L.length=30001; /表长度为30

6、001 srand(unsigned)time(NULL); for(int i=1; L.ri.key=rand()%30001+1; fp=fopen(构造一个线性表.txtif(fp=NULL)/打开文件失败 return OK;/InitList_Sq 算法的时间复杂度分析:O(n)2.Bubble_sort()每趟不断将记录两两比较,若发现逆序,则交换两个记录,使排序码较小的元素逐渐从后部移向前部(就象水底的气泡一样逐渐向上冒)。void Bubble_sort(SqList & RedType x; int n; n=L.length; /表长 for (int i=1; i=i;

7、 j-) if(LT(L.rj+1.key,L.rj.key) flag=1; /有交换,置标志 x=L.rj; /L.rj L.rj+1 L.rj=L.rj+1; L.rj+1=x; if(flag=0) break; /若无交换则可结束冒泡排序O(n2)3、SelectSort()第1趟:从R1Rn中选取最小值,与R1交换;第2趟:从R2Rn中选取最小值,与R2交换;第 i 趟:从RiRn中选取最小值,与Ri交换;第 n -1趟: 从Rn1Rn中选取最小值,与Rn1交换. 共通过n1趟,得到一个按排序码从小到大排列的有序序列void SelectSort(SqList & /对顺序表进行简

8、单选择排序L.length; +i) /在L.ri.L.length 中选择key最小的记录 int k=i; for(int j=i+1;j0)&(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;void ShellSort(SqList &L,int dlta,int t) /Shell排序,dlta为增量序列,t为增量个数 int k; for(k=0;kt;k+) ShellInsert(L,dltak);/ ShellSortO(n(2n)2)5、Insertsort()每步将一个待排序的对象,按其排序码

9、大小,插入到前面已经排好序的一组对象的适当位置上,直到对象全部插入为止。在已形成的有序表中顺序查找,并在适当位置插入,把原来位置上的元素向后顺移。void Insertsort(SqList &L) /对顺序表L进行直接插入排序 for(int i=2; if (LT(L.ri.key,L.ri-1.key) /需将L.ri插入有序表 L.r0=L.ri; /复制为“哨兵”,暂存 for (int j=i-1;LT(L.r0.key,L.rj.key);j-) L.rj+1=L.rj; /位置j指示了第一个keyL.ri.key的元素 L.rj+1=L.r0; /将暂存在r0中的记录插入到正确位置 / printf( O(n2)五、测试数据和结果1、测试数据 随机产生30000个数2、测试结果本程序在VC+环境下实现,下面是对以上测试数据的运行结果。(1) 主菜单显示如下:六、结束语 本设计完成了课题要求的任务,较熟练地掌握了各种排序方法。在设计过程中,由于个别代码段设计不当多次出现程序溢出情况。在评判各种排序方法的用时上换了两种计时方法,现在使用的这个较为准确。从结果可以看出,堆排序和快速排序这两种方法最快。当然或许还有更快的排序方法,此处没有使用并列举出来。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1