Cod sursa(job #1133156)

Utilizator DjokValeriu Motroi Djok Data 4 martie 2014 15:51:50
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include<fstream>
#include<algorithm>
using namespace std;
 int i,n,heap[1001],sf=0,max1;
 
  void add1(int nod)
   {
       if (heap[nod]>heap[nod/2]) {swap(heap[nod],heap[nod/2]); add1(nod/2); }
   }
   
  void cob(int nod)
  {
     max1=nod;
     if (heap[nod]<heap[2*nod] && 2*nod<=sf)  max1=2*nod;
     if (heap[nod]<heap[2*nod+1] && 2*nod+1<=sf) max1=2*nod+1;
     if (nod!=max1) {swap(heap[nod],heap[max1]); cob(max1); }    
   }
   
 int main()
 {
   ifstream cin("algsort.in");
   ofstream cout("algsort.out");  
   cout<<"n=";
   cin>>n;
    for (i=0;i<n;++i)
     { cout<<"a["<<i+1<<"]=";
       cin>>heap[i];                     
                      }
       
                     
    for (i=0;i<n;++i)
    { add1(sf);
      sf++;
    }    
   for (i=0;i<n;++i)
    {
     swap(heap[0],heap[sf]);
      sf--;
     cob(0);
    }
    for (i=1;i<=n;++i)
     cout<<heap[i]<<' ';                     
                            
  
  return 0;              
 }