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 }
     
  • 相关阅读:
    ODBC接口规范
    JDBC与ODBC
    java中newInstance()和new()
    JDBC详解
    用JDBC连接 数据库 进行简单的增删改查
    JDBC接口规范
    JDBC中常用的接口
    java中的getStackTrace和printStackTrace的区别
    linux中的strings命令
    JAVA的容器---List,Map,Set (转)
  • 原文地址:https://www.cnblogs.com/Iwpml-595/p/10673232.html
Copyright © 2011-2022 走看看