Pagini recente » Cod sursa (job #1014748) | Cod sursa (job #2691362) | Cod sursa (job #939803) | Cod sursa (job #95644) | Cod sursa (job #1022036)
#include <fstream>
#include <iostream>
#include <cstdlib>
#include <time.h>
#define length 510000
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int input[length],n;
void read()
{
in>>n;
for(int i=1;i<=n;i++)
{
in>>input[i];
}
}
void write()
{
for(int i=1;i<=n;i++)
{
out<<input[i]<<" ";
}
}
void quicksort(int left, int right)
{
int l,r,pivot;
l = left;
r = right;
if(right != left)
{
pivot = input[(rand() % (right-left)) + left];
}
else
{
pivot = input[left];
}
while(l<=r)
{
while(input[l]<pivot)
{
l++;
}
while(input[r]>pivot)
{
r--;
}
if(l<=r)
{
swap(input[l],input[r]);
l++;
r--;
}
}
if(left<r)
{
quicksort(left,r);
}
if(l<right)
{
quicksort(l,right);
}
}
int main()
{
srand ( time(NULL) );
read();
quicksort(1,n);
write();
}