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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

北邮数据结构实验四.docx

1、北邮数据结构实验四数据结构实验报告实验名称:实验四 排序题目一学生姓名: 班 级:班内序号: 学 号:日 期: 2012年12月15日1实验要求 使用简单数组实现下面各种排序算法,并进行比较。排序算法: 1、插入排序 2、希尔排序3、冒泡排序4、快速排序5、简单选择排序6、堆排序(选作)7、归并排序(选作)8、基数排序(选作)9、其他要求:1、测试数据分成三类:正序、逆序、随机数据2、对于这三类数据,比较上述排序算法中关键字的比较次数和移动次数(其中关键字交换计为3次移动)。 3、对于这三类数据,比较上述排序算法中不同算法的执行时间,精确到微秒(选作)4、对2和3的结果进行分析,验证上述各种算

2、法的时间复杂度编写测试main()函数测试线性表的正确性。2. 程序分析首先,题目要求测试不同的数据,所以可以手动输入待排序元素。其次,由于对一组数据要求用不同的排序算法来处理,所以需要一个复制函数把排序前的无序数组寄存出去,为下一次排序做准备。再次,由于每次排序后都需要把排序后的结果打印出来,代码是一样的,根据相同的代码可以封装成一个函数的思想,所以还需增加一个打印函数。最后 ,由于题目中要求计算代码的执行时间精确到微妙级,而c+库函数中的clock()函数等只能精确到毫秒级,故需调用微软公司在其多媒体Windows中提供了精确定时器的底层API支持,本实验中调用queryperforman

3、cefrequency 和queryperformancecounter函数即可满足精确到微妙级的要求。2.1 存储结构本程序采用简单数组来储存输入的待排序数组。2.2关键算法分析 2.2.1 插入排序算法 插入排序的思想是:每次从无序区取一元素将其添加到有序区中。 C+描述如下,其中形参r为待排序数组,n为待排序元素个数2.2.2 希尔排序算法 希尔排序是一种缩小增量排序的算法,首先将待排序元素集按照一定间隔分成多个子集,分别对这些子集进行直接插入排序,整个序列部分有序。然后缩小间隔,在进行直接插入排序,直到间隔为1,此时,整个序列已全部有序。其c+描述如下:2.2.3 冒泡排序冒泡排序的思

4、想是:两两比较相邻的元素,如果反序,则交换次序,直到没有反序的元素为止。在此思想指导下首先将待排序元素划分为有序区和无序区,初始状态有序区为空,无序区所有待排序素; 对无序区从前向后依次将相邻元素关键码进行比较,若反序,则交换 重复执行直到无序区中没有元素。 2.2.4快速排序算法2,2,4,1一趟快速排序算法自然语言描述如下1 选取区间第一个元素作为轴值2 读取区间首尾坐标,并将其左右侧待比较元素3 右侧扫描:从后向前找到第一个比轴值小的元素,和左侧待比较元素交换(左侧第一个带比较元素为轴值)4 左侧扫描:从前向后找到第一个比轴值大的元素,和右侧待比较元素交换5 重复,直到左右两侧带比较元素

5、的坐标相等其c+描述如下 2.2.4.2完整的快速排序算法如下:2.2.5选择排序算法选择排序自然语言描述如下:1 在r1rn待排序元素序列中选出最小记录,将其与第一个元素rn交换2 在r2rn待排序元素序列中选出最小记录,将其与第一个元素ri交换3 直至rn-1rnC+描述如下:2.2.6堆排序2.2.6.1堆的建立,按照大根堆的定义建立堆的算法如下 说明:根节点存放在r1中,ri的左孩子为r2*i,右孩子为r2*i+12.2.6.2调整数组为升序排列 输出堆顶元素 将堆中最后一个元素移至堆顶,并将剩余元素调整为大根堆 反复执行两个元素,直到堆中只有一个元素2.2.6.2堆排序完整算法如下2

6、.2.7二路归并排序2.2.7.1将归并排序中待归并的两个相邻序列归并的算法 说明:相邻序列分别为rsrm和rm+1rt2.2.7.2一趟归并排序 若子序列的个数为偶数,则将最后一个子序列与前一个子序列合并;若子序列的个数为奇数,则将最后一个子序列直接作为新子序列2.2.7.3完整的二路归并算法2.3 主函数调用示例 2.31包含排序函数的头文件及调用windows底层API中对时间操作函数2.3.2主函数调用代码 3. 程序运行结果31测试主函数流程:流程图如图2所示 图2 流程图示意图3.2测试结果 3.2.1 逆序序列3.2.2正序序列3.2.3 随机序列测试统计结果分析:排序法平均时间最差情形稳定度额外空间备注冒泡排序O(n2)O(n2)稳定O(1)n小时较好选择排序O(n2)O(n2)不稳定O(1)n小时较好插入排序O(n2)O(n2)稳定O(1)大部分已排序时较好希尔排序O(nlogn)O(ns) 12不稳定O(1)s是所选分组快速排序O(nlogn)O(n2)不稳定O(nlogn)n大时较好归并排序O(nlogn)O(nlogn)稳定O(1)n大时较好堆排序O(nlogn)O(nlogn)不稳定O(1)n大时较好4. 总结

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

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