河南工业大学实验报告——查找和排序(排序)——张伟龙.doc_第1页
河南工业大学实验报告——查找和排序(排序)——张伟龙.doc_第2页
河南工业大学实验报告——查找和排序(排序)——张伟龙.doc_第3页
河南工业大学实验报告——查找和排序(排序)——张伟龙.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

河南工业大学实验报告课程名称 数据结构 实验项目 实验三 查找和排序(二)排序院 系 信息学院计科系 专业班级 计科1203 姓 名 张伟龙 学 号 201216010313 指导老师 范艳峰 日 期 2013.6.5 批改日期 成 绩 一 实验目的掌握希尔排序、快速排序、堆排序的算法实现。二 实验内容及要求实验内容:1实现希尔排序。2实现快速排序。3. 实现堆排序。(三选一)实验要求:1. 根据所选题目,用C语言编写程序源代码。2. 源程序必须编译调试成功,独立完成。三 实验过程及运行结果选择第三题:Source Code:#include #includeusing namespace std;void HeapAdjust(int *a,int i,int size) /调整堆 int lchild=2*i; /i的左孩子节点序号 int rchild=2*i+1; /i的右孩子节点序号 int max=i; /临时变量 if(i=size/2) /如果i是叶节点就不用进行调整 if(lchildamax) max=lchild; if(rchildamax) max=rchild; if(max!=i) swap(ai,amax); HeapAdjust(a,max,size); /避免调整之后以max为父节点的子树不是堆 void BuildHeap(int *a,int size) /建立堆 int i; for(i=size/2;i=1;i-) /非叶节点最大序号值为size/2 HeapAdjust(a,i,size); void HeapSort(int *a,int size) /堆排序 int i; BuildHeap(a,size); for(i=size;i=1;i-) swap(a1,ai); /交换堆顶和最后一个元素,即每次将剩余元素中的最大者放到最后面 HeapAdjust(a,1,i-1); /重新调整堆顶节点成为大顶堆 int main() int a100; int size; while(scanf(%d,&size)=1,size) int i; for(i=1;iai; HeapSort(a,size); for(i=1;i=size;i+) coutai ; coutendl; return 0;四 调试情况、设计技巧及体会调试情况:主要是在多次调整使得数据保持堆这种结构上的操作,花费了不少时间设计技巧:运用了堆的这种特殊的数据结构,使得在能够在O(nlogn)的时间复杂度内完成排序操作。调整堆运用了递归算法,简化了程序。体会: 通过写Heapso

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论