Pagini recente » Cod sursa (job #1963545) | w2 | Transport2 | Borderou de evaluare (job #1036900) | Cod sursa (job #1020744)
#include <iostream>
#include <fstream>
#include <ctime>
#include <stdlib.h>
using namespace std;
ifstream in ("algsort.in");
ofstream out ("algsort.out");
int v[500001], N;
int part(int a, int b)
{
srand(time(NULL));
int poz_piv=a+rand()%(b-a+1);
int piv=v[poz_piv];
swap(v[poz_piv], v[b]);
poz_piv=b;
int i=a-1;
for(int j=a;j<b;j++)
{
if(v[j]<=piv)
{
i++;
swap(v[i], v[j]);
}
}
i++;
swap(v[i], v[poz_piv]);
return i;
}
void quicksort(int a, int b)
{
if(a<b)
{
int mid=part(a, b);
quicksort(a, mid-1);
quicksort(mid+1, b);
}
}
int main()
{
in>>N;
for (int i=0;i<N;i++)
in>>v[i];
quicksort(0, N-1);
for (int i=0;i<N;i++)
out<<v[i]<<" ";
}