Pagini recente » Cod sursa (job #1116413) | Cod sursa (job #2470604) | Cod sursa (job #885900) | Cod sursa (job #2951324) | Cod sursa (job #373229)
Cod sursa(job #373229)
#include<stdio.h>
#include<algorithm>
#include<vector>
#include<time.h>
using namespace std;
vector <int> a;
int n,x,i;
int part(int st,int dr)
{
int i=st-1,j=dr+1,q=a[st+rand()%(dr-st+1)];
while(1)
{
do
{
i++;
}while(a[i]<q);
do
{
j--;
}while(a[j]>q);
if(i<j)
swap(a[i],a[j]);
else
return j;
}
return 'nk';
}
void QSort(int st,int dr)
{
if(st<dr)
{
int q=part(st,dr);
QSort(st,q);
QSort(q+1,dr);
}
}
int main()
{
srand(time(NULL));
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&x);
a.push_back(x);
}
QSort(0,n-1);
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}