实验报告各种排序方法及其实现.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文档。上传文档
查看更多
实验报告各种排序方法及其实现

计算机学院实验报告专用纸 实验室:网络实验室 机号:网38 实验日期:2010年6月25日 姓名 XXX 班级 课程名称 数据结构 任课教师 实验项目名称 各种排序方法及其实现 指导教师 实验组别 X 同组者 无 教师评语及成绩: 实验成绩: 教师签字: (请按照实验报告的有关要求书写。一般必须包括:1、实验目的;2、实验内容;3、实验步骤与方法;4、实验数据与程序清单;5、出现的问题与解决方法;6、实验结果、结果分析与体会等内容) 1、实验目的(1)(2)()实验(1)(2)。实验(1)编写排序函数(2)设计一个测试主函数,实现对排序算法的测试。 (3)分析程序的运行结果。实验#includestdio.h #includestdlib.h #define Max 100 //假设文件长度 typedef struct{ //定义记录类型 int key; //关键字项 }RecType; typedef RecType SeqList[Max+1]; //SeqList为顺序表,表中第0个元素作为哨兵 int n; //顺序表实际的长度 //==========直接插入排序法====== void InsertSort(SeqList R) { //对顺序表R中的记录R[1‥n]按递增序进行插入排序 int i,j; for(i=2;i=n;i++) //依次插入R[2],……,R[n] if(R[i].keyR[i-1].key){ //若R[i].key大于等于有序区中所有的keys,则R[i]留在原位 R[0]=R[i];j=i-1; //R[0]是R[i]的副本 do { //从右向左在有序区R[1‥i-1]中查找R[i] 的位置 R[j+1]=R[j]; //将关键字大于R[i].key的记录后移 j--; } while(R[0].keyR[j].key); //当R[i].key≥R[j].key 是终止 R[j+1]=R[0]; //R[i]插入到正确的位置上 }//endif } //==========冒泡排序======= typedef enum {FALSE,TRUE} Boolean; //FALSE为0,TRUE为1 void BubbleSort(SeqList R) { //自下向上扫描对R做冒泡排序 int i,j; Boolean exchange; //交换标志 for(i=1;in;i++) { //最多做n-1趟排序 exchange=FALSE; //本趟排序开始前,交换标志应为假 for(j=n-1;j=i;j--) //对当前无序区R[i‥n] 自下向上扫描 if(R[j+1].keyR[j].key){ //两两比较,满足条件交换记录 R[0]=R[j+1]; //R[0]不是哨兵,仅做暂存单元 R[j+1]=R[j]; R[j]=R[0]; exchange=TRUE; //发生了交换,故将交换标志置为真 } if(! exchange) //本趟排序未发生交换,提前终止算法 return; }// endfor(为循环) } 计算机学院实验报告附页 姓名 XXX 班级 实验名称 各种排序方法及其实现 //========一次划分函数===== int Partition(SeqList R,int i,int j) { // 对R[i‥j]做一次划分,并返回基准记录的位置 RecType pivot=R[i]; //用第一个记录作为基准 while(ij) { //从区间两端交替向中间扫描,直到i=j while(ij R[j].key=pivot.key) //基准记录pivot相当与在位置i上 j--; //从右向左扫描,查找第一个关键字小于pivot.key的记录R[

文档评论(0)

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

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

1亿VIP精品文档

相关文档