欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    (新)C++实现堆排序示例.docx

    • 资源ID:804145       资源大小:17.84KB        全文页数:12页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    (新)C++实现堆排序示例.docx

    C+实现堆排序示例目录堆的实现Heap.h堆的管理及接口Heap.c堆各个接口功能的实现test.c测试堆的实现Heap.h堆的管理及接口#include<stdio.h>#include<stdlib.h>#include<assert.h>typedefintHPDataType;typedefstructHeapHPDataType*a;intsize;intcapacity;Heap;voidAdjustDown(HPDataType*a,intn,introot);堆的向上调整算法voidAdjustUp(HPDataType*a,intchild);"堆的初始化voidHeapInit(Heap*php,HPDataType*a,intn);堆的销毁voidHeapDestroy(Heap*php);堆的插入voidHeapPush(Heap*php,HPDataTypex);堆的删除voidHeapPop(Heap*php);堆里的数据个数intHeapSizefHeap*php);判断堆是否为空intHeapEmpty(Heap*php);/取堆顶数据HPDataTypeHeapTop(Heap*php);Heap.c堆各个接口功能的实现堆的插入:将X插入下标为size的位置,+size然后使用向上调整算法调整堆的删除(删栈顶数据):将栈顶数据和下标为SiZe-I位置的数据交换,然后-SiZe,使用向下调整算法调整#include"Heap.h堆向下调整算法建小堆voidAdjustDown(HPDataType*a,intn,introot)(intparent=root;intchild=parent*2+1;孩子超过数组下标结束while(child<n)(/child始终左右孩子中小的那个if(achild+1<achild&&child+1<n)防止没有右孩子+child;小的往上浮,大的往下沉if(achild<aparent)inttern=aparent;aparent=achild;achild=tem;parent=child;child=parent*2+1;中途child>parent则已满足小堆,直接breakelsebreak;堆的向上调整算法"建小堆voidAdjustUptHPDataType*a,intchild)intparent=(child-1)/2;while(child>0)(if(achild<aparent)inttem=aparent;aparent=achild;achild=tem;child=parent;parent=(child-1)/2;else(break;"堆的初始化voidHeapInit(Heap*php,HPDataType*a,intn)assert(php);assert(a);php->a=(HPDataType*)malloc(n*Sizeof(HPDataType);if(php->a=NULL)(printf("mallocfailn");exit(-l);for(inti=0;i<n;i+php->ai=ai;建堆for(inti=(n-2)/2;i>=0;-i)(AdjustDown(php->a,n,i);php->capacity=n;php->size=n;堆的销毁voidHeapDestroy(Heap*php)assert(php);free(php->a);php->a=NULL;php->capacity=0;php->size=0;voidHeapPush(Heap*php,HPDataTypex)assert(php);if(php->size=php->capacity)HPDataType*tem=(HPDataType*)realloc(php->a,php->capacity*2*Sizeof(HPDataType);if(tem=NULL)(printf("reallocfailn");exit(-l);php->a=tem;php->capacity*=2;php->aphp->size=x;+php->size;AdjustUp(php->a,php->size-1);堆的删除voidHeapPop(Heap*php)assert(php);assert(php->size>O);HPDataTypetern=php->aphp->size-1;php->aphp->size-1=php->aO;php->aO=tern;-php->size;AdjustDown(php->a,php->size,0);堆里的数据个数intHeapSize(Heap*php)(assert(php);returnphp->size;判断堆是否为空为空返回1,不为空返回0intHeapEmpty(Heap*php)assert(php);returnphp->size=071:0;/取堆顶数据HPDataTypeHeapTop(Heap*php)assert(php);assert(php->size>0);returnphp->a0;test.c测试#include"Heap.h"voidTestHeapO(intarr=27,28,65,25,15,34,19,49,18,37;Heaphp;Heaplnit(&hp,arr,sizeof(arr)sizeof(int);while(!HeapEmpty(&hp)(printf("%d",HeapTop(hp);HeapPop(&hp);prntf("n");HeapDestroy(8ihp);intmain(TestHeapO;return0;

    注意事项

    本文((新)C++实现堆排序示例.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开