zoukankan      html  css  js  c++  java
  • swust oj 1015

    堆排序算法

    1000(ms)
    10000(kb)
    2631 / 5595

    编写程序堆排序算法。按照从小到大的顺序进行排序,测试数据为整数。

    输入

    第一行是待排序数据元素的个数; 第二行是待排序的数据元素。(提示:用小根堆)

    输出

    一趟堆排序的结果。

    样例输入

    10
    50 36 41 19 23 4 20 18 12 22
    

    样例输出

    4 12 20 18 22 41 50 36 19 23

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstring>
     4 #include<string>
     5 #include<cstdio>
     6 using namespace std;
     7 
     8 void sift(int arr[],int low,int high)
     9 {
    10     int i=low,j=2*i;
    11     int tmp=arr[i];
    12     while(j<=high)
    13     {
    14         if(j<high&&arr[j]>arr[j+1])  //小的上浮,大的下沉
    15             j++;
    16         if(tmp>arr[j])
    17         {
    18             arr[i]=arr[j];
    19             i=j;
    20             j=2*i;
    21         }
    22         else
    23             break;
    24     }
    25     arr[i]=tmp;
    26 }
    27 
    28 void Heapsort(int arr[],int n)
    29 {
    30     for(int i=n/2;i>=1;i--)  //建立初始堆,第一趟
    31         sift(arr,i,n);
    32 }
    33 
    34 int main()
    35 {
    36     int n;
    37     int arr[1000];
    38     cin>>n;
    39     for(int i=1;i<=n;i++)
    40         cin>>arr[i];
    41     Heapsort(arr,n);
    42     for(int i=1;i<=n;i++)
    43         cout<<arr[i]<<" ";
    44     return 0;
    45 }
     
  • 相关阅读:
    python 之模块random
    python 迭代器
    python 生成器
    python 装饰器前之闭包和装饰器
    ELK平台搭建(下)
    ELK平台搭建(上)
    kvm 搭建
    python中的浅拷贝与深拷贝
    搭建单机版的FastDFS服务
    ASP.NET MVC Razor语法
  • 原文地址:https://www.cnblogs.com/Iwpml-595/p/10673232.html
Copyright © 2011-2022 走看看