按照《算法导论》上的伪代码实现了,刚开始没注意index的问题,导致错误,看来对于伪代码实现C还是要注意下啊!!

#include<iostream>
#include <time.h>
using namespace std;
const int n=11;
void print(int *a)
{
    for(int i = 0; i < 11; ++i)
        cout << a[i] << " ";
    cout << endl;
}
void inline my_swap(int &a,int &b)
{
    int temp = a;
    a = b;
    b = temp;
}
void max_heapify(int *a,int i,int n)
{
    int l = 2*i+1,r = l + 1, largest = i;
    if(l < n && a[l] > a[i])
        largest = l;
    if(r < n && a[r] > a[l])
        largest = r;
    if(largest != i)
    {
        my_swap(a[largest],a[i]);
        max_heapify(a,largest,n);
    }
}
void build_max_heap(int *a,int n)
{
    for(int i = (n%2==0?n/2-1:n/2); i >= 0; --i)
       max_heapify(a,i,n);
}
void heapsort(int *a,int n)
{
    build_max_heap(a,n);
    cout<<"建立最大堆之后: ";
    print(a);
    int size=n;
    for(int i = n-1; i > 0; --i)
    {
        my_swap(a[0],a[i]);
        --size;
        max_heapify(a,0,size);
    }
}
int main()
{
    srand(time(NULL));
    int *a = new int[n];
    for(int i=0;i<n;++i)
        a[i]=rand();
    cout<<"建立最大堆之前: ";
    print(a);
    heapsort(a,n);
    cout<<"最大堆排序之后: ";
    print(a);
}

算法导论chapter6 堆排序的代码相关推荐

  1. 算法导论中C语言代码,算法导论-学习笔记与进度

    算法导论 阅读进度 第一部分 基础知识 第一章 计算中算法的角色 Done 1.1 算法 输入与输出 算法可以解决哪些问题 数据结构 技术 一些比较难的问题 1.2 作为一种技术的算法 效率 算法和其 ...

  2. 算法导论 c语言,算法导论 之 堆排序[C语言]

    一.算法实现 堆排序算法的时间复杂度为O(nlgn),其算法实现如下: void heap_sort(int *array, int max) { int idx = 0; build_max_hea ...

  3. 算法导论6:排序小结和最值取法 2016.1.6

    今天想做测试各个排序算法运行时间比较的程序,来对这几天学的排序算法小结一下.所以我先生成了1000000个1~150之间的随机数存到文件里.然后做了一个测试运行时间的程序.想看一下结构.但是结果效果并 ...

  4. 算法导论 练习12.1

    12.1-1 对于关键字集合{1,4,5,10,16,17,21}\{1,4,5,10,16,17,21\}{1,4,5,10,16,17,21},分别画出高度为2.3.4.5和6的二叉搜索树. 这里 ...

  5. 【算法导论】 内部排序算法总结

    排序名称 时间复杂度 空间复杂度 稳定性 直接插入排序 O(n^2) O(1) 稳定 折半插入排序 O(n^2) O(1) 稳定 希尔排序 O(n^2) O(1) 不稳定 冒泡排序 O(n^2) O( ...

  6. 算法导论中英文版下载

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 算法导论 ...

  7. Haffman编码(算法导论)

    上次算法导论课讲到了Haffman树,笔者惊叹于Haffman编码的压缩效果,故想自己亲自动手尝试写一个极简的Haffman压缩程序. 首先,我们来了解一下什么是Haffman编码 Haffman编码 ...

  8. 《算法导论》读书笔记(七)

    <算法导论>读书笔记之第16章 贪心算法-活动选择问题 前言:贪心算法也是用来解决最优化问题,将一个问题分成子问题,在现在子问题最优解的时,选择当前看起来是最优的解,期望通过所做的局部最优 ...

  9. Python语言程序设计之urllib.request抓取页面,网易公开课之《麻省理工学院公开课:算法导论》

    Python语言用urllib.request模块抓取页面非常简单,再将抓取的页面内容用re模块解析,找出自己想要的东西.下面就就此方法来抓取网易公开课之<麻省理工学院公开课:算法导论>, ...

最新文章

  1. 【React系列】状态(State)和生命周期
  2. C和C++数组的用法
  3. a链接的四个伪类顺序
  4. MATLAB 2018a软件安装教程
  5. 未来我们对微服务和 Serverless 架构有什么期望
  6. 计算机图形学基础考试题,计算机图形学基础复习题
  7. 正式版Android P,喜大普奔!一加6正式推送Android P正式版
  8. CSS3笔记之基础篇(三)文字与字体
  9. P7137-[THUPC2021 初赛]切切糕【dp】
  10. live2d动态壁纸android,Live2d动态壁纸
  11. 一个安卓锁机病毒的分析报告
  12. Mac 使用 Aria2 下载百度网盘资源
  13. 疫情当头,宅家看剧!微信公众号图文应该这样排版
  14. BTA前瞻 | CyberMiles创始人卢亮:愿拿百万年薪求区块链人才
  15. 使用Apache OpenNLP探索NLP概念
  16. ‘vue‘ 不是内部或外部命令,也不是可运行的程序或批处理文件
  17. 杨建:网站加速--实例分析篇
  18. 慕课网翁恺老师《面向对象程序设计——Java语言》第一周课程笔记及作业题(设计一个表示分数的Fraction类)
  19. Win11电脑蓝屏怎么办?Win11电脑蓝屏的修复方法
  20. 分布式事务之 LCN 框架实现方案的原理、配置与使用

热门文章

  1. 哥本哈根能效中心:阿里云用清洁的计算能力改变世界
  2. android L 关机流程图
  3. fastjson json串转list
  4. SVN关于忽略xcuserdata目录
  5. 开启和关闭(禁用)IE8加速器功能的办法
  6. 用Table变量返回多行数据
  7. Linux系统分析之启动流程
  8. CentOS使用yum安装Docker
  9. Amazing Slide(图片轮播制作工具)中文版
  10. 面试题 flex(二)