Pagini recente » Cod sursa (job #1230707) | Clasament alexei1 | Cod sursa (job #1183450) | Rating Maria Sintea (maria.sintea) | Cod sursa (job #352597)
Cod sursa(job #352597)
/*
* File: main.cpp
* Author: speedemon
*
* Created on October 2, 2009, 2:40 PM
*/
#include <fstream>
#include <cstdlib>
#include <iterator>
/*
*
*/
using namespace std;
ifstream in;
ofstream out;
unsigned *v;
inline void swap( int a, int b )
{
int aux=v[a];
v[a]=v[b];
v[b]=aux;
}
void downheap( int start, int end )
{
for( int root=2*start+1; root < end; )
{
if( root+1 < end && v[root+1] > v[root] ) ++root;
if( v[start] > v[root] ) return;
swap( start, root );
start=root;
root=2*start+1;
}
}
void make_heap( int end )
{
for( int start=end/2-1; start >= 0; --start )
downheap( start, end );
}
void HeapSort( int end )
{
make_heap( end );
for( --end; end >= 0; --end )
{
swap( 0, end );
downheap( 0, end );
}
}
int main()
{int N,i;
in.open("algsort.in");
in>>N;
v=new unsigned[N];
for( i=0; i < N; ++i ) in>>v[i];
HeapSort( N );
out.open("algsort.out");
copy( v, v+N, ostream_iterator<int>( out, " ") );
delete[] v;
return EXIT_SUCCESS;
}