欢迎来到第壹文秘! | 帮助中心 分享价值,成长自我!
第壹文秘
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 第壹文秘 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:609304       资源大小:17.84KB        全文页数:12页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入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)为本站会员(p**)主动上传,第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第壹文秘(点击联系客服),我们立即给予删除!

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 1wenmi网站版权所有

    经营许可证编号:宁ICP备2022001189号-1

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!

    收起
    展开