Pagini recente » Cod sursa (job #2094315) | Cod sursa (job #2892375) | Cod sursa (job #1669371) | Cod sursa (job #2369234) | Cod sursa (job #1109130)
#include <fstream>
using namespace std;
ifstream in ( "algsort.in" ) ;
ofstream out ( "algsort.out" ) ;
int n , i , vect[500005] ;
void swap ( int i , int j )
{
int aux = 0 ;
aux = vect[i] ;
vect[i] = vect[j] ; vect[j] = aux ;
}
void max_heapify ( int n , int i )
{
int left , right , largest = 0 ;
left = i/2 ; right = i/2 + 1 ;
if ( vect[i] < vect[left] ) { largest = left ; }
if ( vect[right] > vect[i] && vect[right] > vect[left] ) { largest = right ; }
if ( largest ) { swap ( i , largest ) ; max_heapify ( n , largest ) ; }
}
void build_heap ( int n )
{
for ( i = n/2 ; i > 0 ; i -- )
{
max_heapify ( n , i ) ;
}
}
void heapsort ( int n )
{
build_heap ( n ) ;
for ( i = n/2 ; i >= 2 ; i -- )
{
swap ( vect[1] , vect[i] ) ;
max_heapify ( i - 1 , 1 ) ;
}
}
int main()
{
in >> n ;
for ( i = 1 ; i <= n ; i ++ )
{
in >> vect[i] ;
}
for ( i = 1 ; i <= n ; i ++ )
{
out << vect[i] << " " ;
}
return 0;
}