美文网首页
[数据结构]堆排序 解题报告

[数据结构]堆排序 解题报告

作者: vouv | 来源:发表于2017-03-26 14:30 被阅读0次

    Problem Description

    实验要求:用堆排序算法按关键字递减的顺序排序。
    程序输入:待排序记录数(整数)和待排序记录(整数序列);

    程序输出:建堆结果和建堆后第一、第二次筛选结果。(注:待排序记录数大于等于3)


    测试输入

    6
    11
    12
    16
    14
    15
    10
    

    测试输出

    16 15 11 14 12 10 
    15 14 11 10 12 
    14 12 11 10 
    

    AcCode

    //
    //  main.cpp
    //  堆排序
    //
    //  Created by jetviper on 2017/3/26.
    //  Copyright © 2017年 jetviper. All rights reserved.
    //
    
    #include <stdio.h>
    
    int arr[10000]={0};
    int n;
    
    void sorting(int len,int t)
    {
        int  i=2*len;
        int tmp=arr[len];
        while(1)
        {
            if(i>t)break;
            
            if(i<t && arr[i]<arr[i+1])i++;
            
            if(tmp>=arr[i])i=t+1;
            
            else  {
                arr[len]=arr[i];
                len=i;
                i*=2;
            }
        }
        arr[len]=tmp;
        return;
    }
    
    int main()
    {
        scanf("%d",&n);
        
        for(int i=1;i<=n;i++)scanf("%d",&arr[i]);
        
        for(int i=0;i<3;i++){
            for(int len=n/2;len>=1;len--)sorting(len,n);
            for(int i=1;i<=n;i++)printf("%d ",arr[i]);
            printf("\n");
            arr[1]=arr[n];
            n--;
        }
        
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:[数据结构]堆排序 解题报告

          本文链接:https://www.haomeiwen.com/subject/ybckottx.html