数据结构堆排序问题实验报告.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文档。上传文档
查看更多
数据结构堆排序问题实验报告

《数据结构与算法设计》 堆排序问题实验报告 ——实验五 专业物联网工程1班 学号姓名:刘沛航 实验目的 ?????????本程序是利用堆排序算法进行排序按照字典序列由小到大排列出某个集体中的n个人名(汉语拼音)。 二、实验内容 用户可以根据自己的需求输入一个顺序表,并通过利用堆排序按非递减排序已有的顺序表。大概操作如下:1、首先创建一个空列表,用于保存已排序的有序数列(我们称之为有序列表)。2、找到数列中最大的数字,将其加在有序列表的末尾,并将其从原数列中删除。3重复2号步骤,直至原数列为空。 三、程序设计 1、概要设计 (1)为实现上述算法,需要顺序表的抽象数据类型: ADT sqlist { 数据对象D:D是具有相同特征的数据元素的集合。各数据元素均含有类型相同,可唯一标识数据元素的关键字。 数据关系R:数据元素同属一个集合。 基本操作P: Creatsqlist(l) 操作结果:构造一个具有n个数据元素的顺序表l。 ListLength(L) 初始条件:线性表L已经存在 操作结果:返回L中数据元素的个数。 destroylist(l) 初始条件:顺序表l存在。 操作结果:销毁顺序表l。 displaylist(l) 初始条件:顺序表l存在。 操作结果:显示顺序表l。 quicksort (l) 初始条件:顺序表l存在。 操作结果:通过快速排序得到一个有序的顺序表l。 heapsort (l) 初始条件:顺序表l存在。 操作结果:通过堆排序得到一个有序的顺序表l。 heapadjust (l,s,m) 初始条件:顺序表l存在。 操作结果:调整h-r[s]的关键字,使h-r[s]成为一个大顶堆 partion (l,low,high) 初始条件:顺序表l存在。 操作结果:交换顺序表中子表r[low...high]的记录,使枢轴记录到位,并返回其所在的位置。 }ADT sqlist (2). 本程序有三个模块: ⑴ 主程序模块 main(){ 初始化; { 接受命令; 显示结果; } } ⑵ 创建顺序表的模块:主要建立一个顺序表; ⑶快速排序模块:得到一个有序的顺序表; (4)输出顺序表模块:显示已创建顺序表; (5)堆排序模块:得到一个有序的顺序表。 void main() { 初始化; 构造迷宫; 迷宫求解; 迷宫输出; } b、?栈模块——实现栈的抽象数据类型 c、?迷宫模块——实现迷宫的抽象数据类型 2、详细设计 (1)元素类型,结点类型 typedef struct { int key; }keytype; typedef struct { keytype r[100]; int length; }sqlist; (2)对抽象数据类型中的部分基本操作的伪码算法如下: /*创建顺序表*/ void creat(sqlist *l) { int i,key; printf(please intput its length:); scanf(%d,l-length); printf(\n\nplease intput %d data\n,l-length); for(i=1;i=l-length;i++) { scanf(%d,key); l-r[i].key=key; } } /*交换顺序表中子表r[low...high]的记录,使枢轴记录到位,并返回其所在的位置*/ int partion(sqlist *l,int low,int high) { int pivotkey; l-r[0]=l-r[low]; pivotkey=l-r[low].key; while(lowhigh) { while(lowhighl-r[high].key=pivotkey) --high; l-r[low]=l-r[high]; while(lowhighl-r[low].key=pivotkey) ++low; l-r[high]=l-r[low]; } l-r[low]=l-r[0]; return low; } /*快速排序*/ void Qsort(sqlist *l,int low,int high) { int pivotloc; if(lowhigh) { pivotloc=partion(l,low,high); Qsort(l,low,pivotloc-1); Qsort(l,pivotloc+1,high); } } /*快速排序*/

文档评论(0)

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

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

1亿VIP精品文档

相关文档