




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 / 16 排序实验报告 数据结构 课程设计报告 专 业 计算机科学与技术 班 级姓 名学 号指导教师 起止时间 课程设计:排序综合 一、任务描述 排序综合 任务:利用随机函数产生 n 个随机整数,对这些数进行多种方法进行排序。 要求: 至少采用三种方法实现上述问题求解。并把排序后的结果保存在不同的文件中。 统计每一种排序方法的性能,找出其中两种较快的方法。 二、问题分析 1、功能分析 分析设计课题的要求,要求编程实现以下功能: 排序表的建立 即创建顺序表; 顺序表的排序 即直接插入排序、希尔排序、起泡排序、快速排序、简单选择排序操作; 统计每一种排序方法的性能 即测试上机运行程序所花费的时间; 2、数据对象分析 2 / 16 数据信息:随机整数 数据数量可以预先确定 三、数据结构设计 使用顺序表实现,有关定义如下: typedef int Status; typedef int KeyType ; /设排序码为整型量 typedef int InfoType; typedef struct /定义被排序记录结构类型 KeyTypekey ; /排序码 I nfoType otherinfo;/其它数据项 RedType ; typedef struct RedType * r;/存储带排序记录的顺序表 /r0作哨兵或缓冲区 int length ; /顺序表的长度 SqList ; /定义顺序表类型 四、功能设计 主控菜单设计 为实现通各种排序的功能,首先设计一个含有多个菜单项的主控菜单程序,然后再为这些菜单项配上相应的功能。 程序运行后,给出 6 个菜单项的内容和输入提示,3 / 16 如下: 1. 直接插入排序 2. 希尔排序 3. 起泡排序 4. 快速排序 5. 简单选择排序 0. 退出系统 程序模块结构 由课题要求可将程序划分为以下几个模块: ? 主控菜单项选择函数 menu ? 创建排序表函数 InitList_Sq ? 对顺序表 L 进行直接插入排序函数 Insertsort ? 希尔排序函数 ShellSort; ? 起泡排序函数 Bubble_sort ? 快速排序函数 QSort ? 简单选择排序函数 SelectSort 函数调用关系 程序的主要结构如下图所示。 其中 main 是主函数,它进行菜单驱动,根据选择项05调用相应的函数。 main函数使用 for循环实现重复选择。其循环结构如下: for 4 / 16 long start,end; switch) case 1:printf;start=clock;Insertsort;end=clock;printf;fp=fopen; if/打开文件失败 printf; exit;forfprintf; break; case 2: printf; start=clock; ShellSort; end=clock; printf; fp=fopen; if/打开文件失败 printf; exit; for fprintf; fclose; break; case 3: printf; 5 / 16 start=clock; Bubble_sort; end=clock; printf; fp=fopen; if/打开文件失败 printf; exit; for fprintf; fclose; break; case 4: printf; start=clock; QSort ; end=clock; printf; fp=fopen; if/打开文件失败 6 / 16 printf; for fprintf; fclose; break; case 5: printf; start=clock; SelectSort; end=clock; printf; fp=fopen; if/打开文件失败 printf; exit; for fprintf; fclose; 7 / 16 break; case 0: printf; return ; 文件结构 1、:顺序表相关的定义与函数声明 2、:顺序表排序运算的实现 3、:主菜单函数的声明 4、:主菜单函数的实现 5、:主函数 各函数的算法 设计 1、 InitList_Sq 算法原理:数组指针 r 指示线性表的基址, length指示线性表的当前长度,将随机生成的数赋给线性表,并生成相应文件。 流程图: 深 圳 大 学 实 验 报 告 课程名称: 学院: 报告人 8 / 16 实验时间: 实验报告提交时间: 教务部制 【一】需求分析 课程题目是排序算法的实现,课程设计一共要设计八种排序算法。这八种算法共包括:堆排序,归并排序,希尔排序,冒泡排序, 快速排序,基数排序,折半插入排序,直接插入排序。 为了运行时的方便,将八种排序方法进行编号,其中 1 为堆排序, 2为归并排序, 3为希尔排序, 4 为冒泡排序,5 为快速排序, 6为基数排序, 7 为折半插入排序 8为直接插入排序。 【二】概要设计 1.堆排序 算法思想:堆排序只需要一个记录大小的辅助空间,每个待排序的记录仅占有一个存储空间。将序列所存储的元素 AN看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:树中任一非叶结点的元素均不大于其左右孩子结点的元素。算法的平均时间复杂度为 O。 程序实现及核心代码的注释: for 9 / 16 if) j+; if break; sui=suj; i=j; sui=temp; void dpx/堆排序 int i,temp; cout output; for head; for temp=sui; sui=su0; su0=temp; 10 / 16 head; cout output; 2.归并排序 算法思想:先将相邻的个数为 1 的每两组数据进行排序合并;然后对上次归并所得到的大小 为 2的组进行相邻归并;如此反复,直到最后并成一组,即排好序的一组数据。 程序实现及核心代码的注释: int is21000; void bin int i=low,j=mid+1,k=low; while if / 此处为排序顺序的关键,用小于表示从小到大排序 is2k+=sui+; else is2k+=suj+; while is2k+=sui+; while is2k+=suj+; 11 / 16 for / 写回原数组 sui=is2i; void g if int mid=/2; g; g; bin; 3.希尔排序 算法思想:先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基 本有序”时,再对全体记录进行一次直接插入排序。其中,子序列的构成 不是简单的“逐段分割”,而是将分隔某个“增量”的记录组成一个子序列。 程序实现及核心代码的注释: while 12 / 16 m/=2; if for if temp=sui; for; j-=m) suj+m=suj; suj+m=temp; 4.冒泡排序 算法思想: 1、先将一组未排序的数组的最后一个数与倒数第二个数进行比较,并将较小的数放于两个数中较前的位置,然后将比较后的较小的数与倒数第三个进行比较,依次比较到第一个数,即可得到第一个数是所有数中最小的数; 2、然后再将数组的最后一个数与倒数第二个数进行比较,并将较小的数放于两个数中较前的位置,依次比较13 / 16 到第二个数, 3、如此循环到只剩最后两个比较,即得到排好序的一组数。 程序实现及核心代码的注释: for flag=true; for if temp=suj; suj=suj+1; suj+1=temp; flag=false; break; cout int K; int find 14 / 16 int temp; bool flag=true; temp=sui; while if while j-; if break; if break; sui=suj;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年绿色环保住宅精装修施工服务协议
- 2025年度企事业单位租赁新能源车辆与驾驶员培训一体化服务合同
- 2025年航空航天设备专用材料供应及售后服务保障合同
- 2025年和谐婚姻关系维护与离婚协议定制服务合同
- 海外消防知识培训总结课件报告
- 财务人员个人工作报告
- 海参销售基本知识培训总结
- 2025年电子商务产业园室内空间优化改造及设施设备供应合同
- 2025年饮品店租赁合同纠纷快速调解与咨询服务协议
- 2025年企业合规风险防范法律服务合同
- 2024年重庆永川区招聘社区工作者后备人选笔试真题
- 医学技术专业讲解
- 唯奋斗最青春+课件-2026届跨入高三第一课主题班会
- 2025民办中学教师劳务合同模板
- 2025年南康面试题目及答案
- 2025年事业单位考试贵州省毕节地区纳雍县《公共基础知识》考前冲刺试题含解析
- 高中喀斯特地貌说课课件
- 黄冈初一上数学试卷
- 2025年中国花盆人参行业市场发展前景及发展趋势与投资战略研究报告
- QGDW11337-2023输变电工程工程量清单计价规范
- 航天飞行器模型设计教学
评论
0/150
提交评论