Pagini recente » Cod sursa (job #439038) | Cod sursa (job #436360) | Cod sursa (job #1049685) | Cod sursa (job #234871) | Cod sursa (job #865499)
Cod sursa(job #865499)
#include <cstdio>
#include <ctime>
#include <cstdlib>
const int MAX_SIZE(500000);
int v [MAX_SIZE];
int n;
inline void read (void)
{
std::freopen("algsort.in","r",stdin);
std::scanf("%d",&n);
for (int *iterator(v), *end(v + n) ; iterator < end ; ++iterator)
std::scanf("%d",iterator);
std::fclose(stdin);
}
inline void print (void)
{
std::freopen("algsort.out","w",stdout);
for (int *iterator(v), *end(iterator + n) ; iterator < end ; ++iterator)
std::printf("%d ",*iterator);
std::putchar('\n');
std::fclose(stdout);
}
void swap (int a, int b)
{
int temp(v[a]);
v[a] = v[b];
v[b] = temp;
}
void quicksort (int left, int right)
{
int pivot(v[left + (std::rand() % (right - left + 1))]), i(left), j(right);
while (i < j)
{
while (v[i] < pivot)
++i;
while (v[j] > pivot)
--j;
if (i <= j)
{
swap(i,j);
++i;
--j;
}
}
if (left < j)
quicksort(left,j);
if (right > i)
quicksort(i,right);
}
int main (void)
{
read();
std::srand(std::time(0));
quicksort(0,n - 1);
print();
return 0;
}