编写程序堆排序算法。按照非递减排序,测试数据为整数。

Description
第一行是待排序数据元素的个数; 第二行是待排序的数据元素。

Input
一趟堆排序的结果。

Output
1
2
3

10
50 36 41 19 23 4 20 18 12 22

Sample Input
1
4 12 20 18 22 41 50 36 19 23
Sample Output
输出格式: 
A#B#C#D# 
其中A,B,C,D代码有效数据,#代码空格.
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<iostream>
using namespace std;int _min;
void Pushdown(int *a,int low,int high)
{int i=low,j=2*i;int temp=a[i];while(j<=high){if(j<high&&a[j]>a[j+1]){j++;}if(temp>a[j]){a[i]=a[j];i=j;j=2*i;}else break;}a[i]=temp;
}void HeadSort(int *a,int n)
{for(int i=n/2;i>=1;i--){Pushdown(a,i,n);}
//  for(int i=n;i>=2;i--){
//      swap(a[1],a[i]);
//      Pushdown(a,1,i-1);
//      break;
//  }}int main()
{int a[1000];int n;cin>>n;_min=9999999;for(int i=1;i<=n;i++){cin>>a[i];if(_min>a[i])_min=a[i];}HeadSort(a,n);for(int i=1;i<=n;i++){cout<<a[i]<<' ';}return 0;
}
Hint

swustoj堆排序算法(1015)相关推荐

  1. SWUST OJ 1015: 堆排序算法

    1015: 堆排序算法 题目描述 编写程序堆排序算法.按照从小到大的顺序进行排序,测试数据为整数. 输入 第一行是待排序数据元素的个数: 第二行是待排序的数据元素.(提示:用小根堆) 输出 一趟堆排序 ...

  2. swust.oj1015: 堆排序算法

    1015: 堆排序算法 题目描述 编写程序堆排序算法.按照从小到大的顺序进行排序,测试数据为整数. 输入 第一行是待排序数据元素的个数: 第二行是待排序的数据元素.(提示:用小根堆) 输出 一趟堆排序 ...

  3. 上标3下标6算法_图解堆排序算法

    堆排序定义 一般来说,算法就像数学公式,前人经过不断优化和验证得到有规律性的公式留给后人使用,当然也会交给后人验证的思路.那么堆排序算法就是这样,它有基本固定的定义如下: 1.将数组构建为一颗有规则的 ...

  4. 9个元素换6次达到排序序列_一文带你读懂排序算法(三):堆排序算法

    国庆节快乐~点击上方文字关注我们哦 堆是一种特殊的树形数据结构,其每一个结点都有一个值,通常提到的堆都是指一棵完全二叉树,根结点的值小于(或大于)两个子结点的值,同时,根结点的两个子树也分别是一个堆. ...

  5. 精通八大排序算法系列:二、堆排序算法

    精通八大排序算法系列:二.堆排序算法 作者:July .二零一一年二月二十日 本文参考:Introduction To Algorithms,second edition. ------------- ...

  6. 堆排序时间复杂度_堆排序算法

    堆排序是指利用堆积树这种数据结构所设计的一种排序算法,它是选择排序的一种.可以利用数组的特点快速定位指定索引的元素.堆是一个优先级队列,对于大顶堆而言,堆顶元素的权值最大.将待排序的数组建堆,然后不断 ...

  7. 【java排序】 归并排序算法、堆排序算法

    一.归并排序算法 基本思想: 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的.然后再把有序子序列合并为整体有序序列. 归并 ...

  8. JavaScript实现heapsort堆排序算法(附完整源码)

    JavaScript实现heapsort堆排序算法(附完整源码) Heap.js完整源代码 MinHeap.js完整源代码 Comparator.js完整源代码 Sort.js完整源代码 HeapSo ...

  9. 经典排序算法(7)——堆排序算法详解

    堆排序(Heap sort)是指利用堆(最大堆.最小堆)这种数据结构所设计的一种排序算法.堆是一个完全二叉树的结构,并同时满足如下性质:即子结点的键值或索引总是小于(或者大于)它的父节点. 一.算法基 ...

  10. java 实现 堆排序算法_C程序实现堆排序算法

    java 实现 堆排序算法 Heap Sort is a comparison-based sorting algorithm that makes use of a different data s ...

最新文章

  1. iOS学习之iOS沙盒(sandbox)机制和文件操作(二)
  2. 初等数论--同余--MILLER-RABIN素性检测算法
  3. C# 利用反射动态调用类成员
  4. nancy框架安装并使用
  5. 在驱动和应用程序间共享内存
  6. matlab水力学工具箱,新浪潮水工设计软件
  7. qprocess 最小化启动外部程序_安川机器人预约启动功能
  8. Java的反射机制(Reflection)
  9. python27的Windows下环境搭建
  10. Linux进程之如何查看进程详情?
  11. 【Call Me Maybe】MMD镜头+动作打包下载.zip
  12. MATLAB图像分割的GUI设计
  13. 为什么那么容易转行软件测试,软件测试好学吗 大概要学多久
  14. rst 文件打开方式
  15. 系统运维工程师学习计划
  16. echarts 的初始化
  17. Spring实战笔记——(1)Spring之旅(上)
  18. 购买安防监控摄像头时如何省钱
  19. VMware虚拟机Host-Only(仅主机模式)
  20. 《性能优化》并发与并行

热门文章

  1. 重心解模糊化matlab,谁能给我个用重心法的MATLAB模糊推理程序
  2. 詹森不等式到底是什么?
  3. PHP字符串解析函数
  4. Flir Blackfly S USB3 工业相机:白平衡设置方法
  5. 移动安全-IOS逆向第三天——实战HOOK RSA/DES加密
  6. JavaScript基础知识总结(必看篇)
  7. PB中导入EXCEL数据
  8. MySQL 8.0中的新增功能
  9. 场景法测试用例设计详解
  10. Unity 模拟鼠标自动点击事件