实验十二 排序算法 (昆工版).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验十二 排序算法 (昆工版)

昆明理工大学信息工程与自动化学院学生实验报告 ( 2013 — 2014 学年第三学期 ) 课程名称:数据结构 开课实验室:信自楼442 2013年12月24日 年级、专业、班 计科122班 学号 201210405204 姓名 邹华宇 成绩 实验项目名称 简单的排序算法 指导教师 胡守成 教师评语 教师签名: 年 月 日 注:报告内容按实验须知中七点要求进行。 一、实验目的和要求 1.掌握各种查找算法理解和实现; 2.增强上机编程调试能力; 程序的主要功能 1.用户输入任意个数,产生相应的随机数 2.用户可以自己选择排序方式(直接插入排序、折半插入排序、起泡排序、快速排序、选择排序、堆排序、基数排序)的一种 3.程序给出原始数据、排序后从小到大的数据,并给出排序所用的时间。 二、实验原理及基本技术路线图(方框原理图) 各个排序是算法思想: (1)直接插入排序:将一个记录插入到已排好的有序表中,从而得到一个新的,记录数增加1的有序表。 (2)折半插入排序:插入排序的基本插入是在一个有序表中进行查找和插入,这个查找可利用折半查找来实现,即为折半插入排序。 (3)起泡排序:首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序,则将两个记录交换,然后比较第二个记录和第三个记录的关键字。依此类推,直到第N-1和第N个记录的关键字进行过比较为止。上述为第一趟排序,其结果使得关键字的最大纪录被安排到最后一个记录的位置上。然后进行第二趟起泡排序,对前N-1个记录进行同样操作。一共要进行N-1趟起泡排序。 (4)快速排序:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,已达到整个序列有序。 (5)选择排序:通过N-I次关键字间的比较,从N-I+1个记录中选出关键字最小的记录,并和第I(1=I=N)个记录交换。 (6)堆排序:在堆排序的算法中先建一个大顶堆,既先选得一个关键字作为最大的记录并与序列中最后一个记录交换,然后对序列中前N-1记录进行选择,重新将它调整成一个大顶堆,如此反复直到排序结束。 (7)基数排序:按最低位优先法先对低位关键字进行排序,直到对最高位关键字排序为止,经过若干次分配和收集来实现排序。 三、所用仪器、材料(设备名称、型号、规格等) 联想计算机一台 Microsoft Visual c++ 6.0 四、程序源代码(*cpp) /********************************************************************************************** 排序算法 设计要求:利用随机函数产生N个随机整数(N = 500,1000,1500,2000,2500,…,30000), 利用直接插入排序、折半插入排序,起泡排序、快速排序、||选择排序、堆排序,基数排序七种排序方法************************************************************************************************/ #include stdio.h #include stdlib.h #include time.h//计时 #define ERROR 0 #define OK 1 #define OVERFLOW -2 #define MAXSIZE 100000 //用户自己规定排序的数字的长度 typedef int Status; typedef struct { int *r; // r[0]闲置 int length; //顺序表的总长度 }Sqlist; //构造一个空线性表 Status InitSqlist(Sqlist L) { L.r=(int *)malloc(MAXSIZE*sizeof(int)); //分配存储空间 if(!L.r) { printf(存储分配失败!); exit(0); } //存储分配失败 L.length=0;//初始长度为0 return OK; } //输入随机数并显示在界面上 Status ScanfSqlist

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档