Pagini recente » Cod sursa (job #2279351) | Cod sursa (job #1585475) | Cod sursa (job #538825) | Cod sursa (job #388320) | Cod sursa (job #3173979)
// quicksort
#include <fstream>
#include <algorithm>
using namespace std;
#define MAXN 500000
int a[ MAXN ];
ifstream in( "algsort.in" );
ofstream out( "algsort.out" );
void quicks( int a[ ], int bg, int nd )
{
int pivot, left, right, aux;
pivot = a[ bg + rand() % ( nd - bg + 1 ) ];
left = bg;
right = nd;
while( a[ left ] < pivot )
{
left++;
}
while( a[ right ] > pivot )
{
right--;
}
while( left < right )
{
aux = a[ left ];
a[ left ] = a[ right ];
a[ right ] = aux;
do
{
left++;
}
while( a[ left ] < pivot );
do
{
right--;
}
while( a[ right ] > pivot );
}
if( bg < right )
{
quicks( a, bg, right );
}
if( right + 1 < nd )
{
quicks( a, right + 1, nd );
}
}
int main()
{
int n, i;
in >> n;
for( i = 0; i < n; i++ )
{
in >> a[ i ];
}
quicks( a, 0, n - 1 );
for( i = 0; i < n; i++ )
{
out << a[ i ] << " ";
}
return 0;
}