Pagini recente » Cod sursa (job #769320) | Cod sursa (job #1226798) | Cod sursa (job #138142) | Cod sursa (job #252540) | Cod sursa (job #2699430)
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
int v[100001], n, aux[100001];
void Quick (int left,int right)
{
if (left>=right)
{
return;
}
int ok=1;
for (int i=left+1; i<=right; i++)
{
if (v[i]!=v[i-1])
{
ok=0;
break;
}
}
if (ok==1)
{
return;
}
int x=rand()%(right-left+1)+left;
int nr=0,cp;
for (int i=left; i<=right; i++)
{
if (v[i]<=v[x])
{
aux[++nr]=v[i];
}
}
cp=nr;
for (int i=left; i<=right; i++)
{
if (v[i]>v[x])
{
aux[++nr]=v[i];
}
}
for (int i=1; i<=nr; i++)
{
v[left+i-1]=aux[i];
}
Quick(left,left+cp-1);
Quick(left+cp,right);
}
int main()
{
cin >> n;
for (int i=1; i<=n; i++)
{
cin >> v[i];
}
srand(time(0));
Quick(1,n);
for (int i=1; i<=n; i++)
{
cout << v[i] << " ";
}
return 0;
}