- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
堆排序实验报告详解
一、实验目的
(1)了解堆排序方法概念;
(2)理解堆排序方法的求解过程;
(3)掌握堆排序方法运算 二、实验内容
(1)建立包含10个数据序列的堆(数据元素的值由自己设定);
(2)完成堆排序运算的程序;
(3)给出程序和堆排序前后的结果。 三、实验环境
1、硬件配置:Pentium(R) Dual-Core9 CUP E6500 @2.93GHz,1.96的内存
2、软件环境:Microsoft Windows XP Professional Service Pack 3,Microsoft Visual C++ 6.0 四、需求分析1、输入的形式和输入值的范围一维数组A2、输出的形式3、程序所能达到的功能4、测试数据: 五、概要设计
为了实现上述操作,应以为存储结构。
1基本操作:void Heapify(int s,int m)
(2)void BuildHeap(int n)
(3)void Heap_Sort(int n)
2、本程序包含个模块:
(1)主程序模块;
(2)()模块调用图:
主程序模块
3、流程图
流程图见最后一页 六、详细设计
1int R[MAX];
元素类型为整形。
2、每个模块的分析:
(1)主程序模块:void main()
{
int i,n;
printf(请输入数组A元素的个数:);
scanf(%d,n);
if(n=0||nMAX)
{
printf(请重新输入n);
}
printf(请输入数组A的元素值\n);
for(i=1;i=n;i++)
scanf(%d,R[i]);
Heap_Sort(n);
printf(输出排好序后的A中的元素);
for(i=1;i=n;i++)
printf(%3d,R[i]);
printf(\n);
}
(2)void Heap_Sort(int n) 堆排序函数模块
void Heap_Sort(int n)
{ //对R[1……n]进行堆排序,用R[0]做暂存单元
int i;
BuildHeap(n);//将R[1-n]简称初堆
for(i=n;i1;i--)
{ //对当前无序区R[1……n]进行堆排序,共做n-1趟
R[0]=R[1];//将堆顶和堆中最后一个元素交换
R[1]=R[i];//将R[1……n]重新调整为堆,仅有R[1]可能会违反堆性质
R[i]=R[0];
Heapify(1,i-1);
}
}
建堆函数模块
void BuildHeap(int n)
{ //由一个无序的序列简称一个堆
int i;
for(i=n/2;i0;i--)
Heapify(i,n);
}
堆调整函数模块
void Heapify(int s,int m)
{ //对R[1……n]进行堆调整,用temp做暂存单元
int j,temp;
temp=R[s];
j=2*s;
while(j=m)
{
if(R[j]R[j+1]jm) j++;
if(tempR[j]) break;
R[s]=R[j];
s=j;
j=j*2;
}
R[s]=temp;
}
3)函数调用关系图main()
void Heap_Sort(int n)
void BuildHeap(int n)
void Heapify(int s,int m)
3、完整的程序:#includestdio.h
#define MAX 255
int R[MAX];
void Heapify(int s,int m)
{ //对R[1……n]进行堆调整,用temp做暂存单元
int j,temp;
temp=R[s];
j=2*s;
while(j=m)
{
if(R[j]R[j+1]jm) j++;
if(tempR[j]) break;
R[s]=R[j];
s=j;
j=j*2;
}
R[s]=temp;
}
void BuildHeap(int n)
{ //由一个无序的序列简称一个堆
int i;
for(i=n/2;i0;i--)
Heapify(i,n);
}
void Heap_Sort(int n)
{ //对R[1……n]进行堆排序,用R[0]做暂存单元
int i;
BuildHeap(n);//将R[1-n]简称初堆
for(i=n;i1;i--)
{ //对当前无序区R[1……n]进行堆排序,共做n-1趟
您可能关注的文档
- 2017版《三年高考两年模拟》生物汇编专题:专题六光合作用课件.doc
- 2017版第30讲复杂分数应用题课件.docx
- 基础架构及服务器虚拟化解决方案详解.doc
- 2017版高三语文一轮复习第4部分高考作文梯级学案专题二文体特征专攻10细处打磨学会构段课件课件.ppt
- 2017版高考化学一轮复习专题七电解质溶液中的离子平衡元检测卷课件.doc
- 2017版《三年高考两年模拟》地理汇编专题:第七单元自然环境对人类活动的影响课件.docx
- 2017版《三年高考两年模拟》地理汇编专题:第二十二单元自然灾害与防治课件.docx
- 2017歌华互动媒体广告产品介绍课件.pptx
- 2017淘宝天猫运营策划书课件.ppt
- 2017版高三语文一轮复习第2部分古代诗文阅读专题二古代诗歌鉴赏2从答题角度寻求突破方法课件课件.ppt
- 剧本杀行业报告:内容创作规范与剧本市场拓展策略.docx
- 剧本杀行业区域市场区域文化特色与市场潜力分析报告.docx
- 剧本杀行业区域市场拓展实战案例研究.docx
- 剧本杀行业区域市场拓展路径与模式探索报告.docx
- 剧本杀行业区域市场竞争态势与品牌差异化策略研究报告.docx
- 剧本杀行业2025年西北区域市场市场细分领域竞争态势与品牌竞争策略分析研究报告.docx
- 剧本杀行业2025年西北市场拓展前景预测报告.docx
- 剧本杀行业2025年长沙市场发展潜力分析报告.docx
- 剧本杀行业2025年长三角市场竞争策略与布局分析.docx
- 医疗行业数据合规:2025年数据安全法实施后的合规监管挑战与应对.docx
文档评论(0)