Cod sursa(job #1182437)

Utilizator rangerChihai Mihai ranger Data 6 mai 2014 14:01:26
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
using namespace std;
const int nmax=600000;
int a[nmax],n;

void shift(int k,int n)

{   int s;
    do
    {
        s=0;
        if (2*k<=n) s=2*k;
        if (2*k+1<=n && a[2*k+1]<a[s]) s=2*k+1;
        if (a[s]>=a[k]) s=0;
        if (s)
        {
            swap(a[k],a[s]);
            k=s;
        }

    } while (s);
}

int main()
{
    ifstream cin("algsort.in");
    cin>>n;
    for (int i=1;i<=n;i++) cin>>a[i];   //citirea
    for (int i=n/2;i>0;i--) shift(i,n);  // crearea heapului
    for (int i=n;i>1;i--)   // heapsort
    {
        swap(a[1],a[i]);
        shift(1,i-1);
    }

    ofstream cout("algsort.out");
    for (int i=n;i>=1;i--) cout<<a[i]<<" " ;
}