Cod sursa(job #2296894)

Utilizator stan_flaviusStan Flavius Stefan stan_flavius Data 5 decembrie 2018 04:39:10
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.69 kb
#include <fstream>
#define nmax 100001

using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");

int a[nmax],n;

void heapify(int ct,int r)
{ int i=r;
  int left=2*r+1;
  int right=2*r+2;

  if(left<ct && a[left]>a[i]) i=left;
  if(right<ct && a[right]>a[i]) i=right;

  if(i!=r)
     { swap(a[i],a[r]);
       heapify(ct,i);
     }
}

void heapsort()
{ int i;
  for(i=n/2-1; i>=0; i--)
      heapify(n,i);

  for(i=n-1; i>=0; i--)
      {
        swap(a[0],a[i]);
        heapify(i,0);
      }

}
int main()
{
  int i;
  fin>>n;
  for(i=0; i<n; i++)
       fin>>a[i];
  heapsort();
  for(i=0; i<n; i++) fout<<a[i]<<" ";
    return 0;
}