zoukankan      html  css  js  c++  java
  • NOJ1066-堆排序

    堆排序

    时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
    总提交 : 414            测试通过 : 220 

    比赛描述

    给定输入排序元素数目n和相应的n个元素,写出程序,利用内排序算法中堆排序算法进行排序,并输出排序最后结果的相应序列。


    输入

     

    共两行,第一行给出排序元素数目n,第二行给出n个元素,1n100000,每个元素值范围为 [0100000)

    输出

     

    一行,输出排序结果。

    样例输入

    7
    48 36 68 72 12 48 2

    样例输出

    2 12 36 48 48 68 72

     

    提示

     数据结构A实验四

     

    题目来源

    CHENZ

     

    题目没什么好看的,就是一个数组排序,虽然题目是堆排序,快排、归并之类的都能过。主要是平时不怎么用堆排序,第一次写了一下超时了,囧~,下面贴一个别人的算法。

    另外需要注意的是输出格式,行末不能有多余空格,否则A不掉。

     

     1 #include<stdio.h>  
     2 #define SWAP(x, y) {int tmp=x; x=y; y=tmp;}  
     3   
     4 //堆排序
     5 //Author: http://blog.csdn.net/tcherry/article/details/32139911  
     6   
     7 int a[100000];  
     8   
     9 void AdjustDown(int a[], int r, int j)  
    10 {  
    11     int child = 2*r+1;  
    12     int tmp = a[r];  
    13     while(child <= j)  
    14     {  
    15         if(child < j && a[child] < a[child+1]) child ++;  
    16         if(tmp >= a[child]) break;  
    17         a[(child-1)/2] = a[child];  
    18         child = 2*child+1;  
    19     }  
    20     a[(child-1)/2] = tmp;  
    21 }  
    22   
    23 void heapsort(int a[], int n)  
    24 {  
    25     for(int i=(n-2)/2;i>-1;i--) AdjustDown(a, i, n-1); // 构造最大堆  
    26     for(int i=n-1;i>0;i--)  
    27     {  
    28         SWAP(a[0], a[i]); // 大的到屁股后面去  
    29         AdjustDown(a, 0, i-1);  
    30     }  
    31 }  
    32   
    33 int main()  
    34 {  
    35     int n;  
    36     scanf("%d",&n);  
    37     for(int i=0;i<n;i++)  
    38         scanf("%d",&a[i]);  
    39     heapsort(a, n);  
    40   
    41     for(int i=0;i<n-1;i++)  
    42         printf("%d ",a[i]);  
    43     printf("%d
    ",a[n-1]);  
    44   
    45     return 0;  
    46 } 
  • 相关阅读:
    matlab练习程序(灰度图直方图均衡化)
    二叉查找树
    hadoop入门介绍
    配置虚拟机Ubuntu网络连接
    hadoop ubuntu (单节点)部署
    Thrift
    linux打包压缩命令汇总
    [转载]ubuntu 启动流程
    linux命令大全
    Linux文件查找命令find,xargs详述
  • 原文地址:https://www.cnblogs.com/lzjtdxfxl/p/5374615.html
Copyright © 2011-2022 走看看