- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
各种排序算法时间性能的比较资料
PAGE
实训报告
实训题目:各种排序算法时间性能的比较
学 院: 计算机科学与技术学院
专 业: 软件工程
班 级: 142
学 号: 1400170269
学生姓名: 莫磊
指导教师: 蔡丽
2016年 3 月15 日
一、实训目的及要求
数据结构是计算机课程的一门重要的基础课,它的教学要求大致有三个重要方面:其一就是让学生学会分析研究计算机加工的数据对象的特性,以便为数据选择适当的物理结构和逻辑结构;其二,根据结构,选择适当的算法,并初步掌握算法的时间分析和空间分析;其三,学习复杂的程序设计。本综合实训利用Visual Studio 2008 集成编程环境为实践工具,通过上机实践培养学生分析具体问题、解决实际问题的能力,训??和培养学生的数据抽象能力和程序设计的能力。
数据结构是一门实践性较强的课程,以培养学生的数据抽象能力和程序设计的能力为目的。在实训时应注重培养学生的实际操作能力。本综合实训安排了18学时的实验课时,具体要求如下:
1. 学习和理解每个实训题目的基本理论和方法;
2. 掌握每个实验的实现步骤和关键技术;
3. 准备好实验所需要的资源和文档;
4. 上机实现程序,得到通过调试的正确程序。
5. 根据每个实验的不同要求,完成实验报告的word文档。
实训环境
Windows XP
Visual Studio 2013
三、实训内容
(1) 设计并实现上述各种排序算法;
(2) 产生正序和逆序的初始排列分别调用上述排序算法,并比较时间性能;
(3) 产生随机的初始排列分别调用上述排序算法,并比较时间性能。
(4)对各种排序方法(直接插入排序、希尔排序、起泡排序、直接选择排序)的时间性能进行比较。
四、算法描述及实训步骤
上述各种排序方法都是基于比较的内排序,其时间主要消耗在排序过程中进行的记录的比较次数和移动次数,因此,统计在相同数据状态下不同排序算法的比较次数和移动次数,即可实现比较各种排序算法的目的。
五、总结及心得体会
直接选择排序算法是对冒泡排序的改进,这种方法是在参加排序数组中找出最小(或最大)的数据元素,使它与第一个元素中的数据相互交换位置然后再在余下的元素中找出最小(或最大)的数据元素与第二个元素中的元素交换位置,以此类推直到所有元素成为有序序列。
六、实训结果
七、源代码:
#include stdio.h
#include stdlib.h
#include time.h
//正序希尔排序
void xiEr(int num[], int n, int no, int r){
int item;
int i, j, d;
for (d = n / 2; d = 1; d = d / 2){
for (i = d; in; i++){
item = num[i];
j = i - d;
while ((j = 0) (itemnum[j])){
num[j + d] = num[j];
j = j - d;
r = r + 1;
}
num[j + d] = item;
no = no + 1;
}
}
// printf(\n);
// for(int x=0;xn;x++){
// printf(%d\t,num[x]);
// }
}
//逆序希尔排序
void xiErUp(int num[], int n, int no, int r){
int item;
int i, j, d;
for (d = n / 2; d = 1; d = d / 2){
for (i = d; in; i++){
item = num[i];
j = i - d;
while ((j = 0) (itemnum[j])){
num[j + d] = num[j];
j = j - d;
r = r + 1;
}
num[j + d] = item;
no = no + 1;
}
}
}
//正序冒泡排序
void MaoPao(int num[], int n, int n
文档评论(0)