Cod sursa(job #1243917)

Utilizator obidanDan Ganea obidan Data 16 octombrie 2014 16:25:04
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <algorithm>
#include <stdlib.h>
#include <time.h>
using namespace std;
int a[500002];
int getPivot(int l, int r)
{
    int p=rand()%(r-l+1)+l;
    return p;
}
void quicksort(int l, int r)
{
    if(r-l<1) return;
    if(r-l==1)
        if(a[r]<a[l])
    {
        swap(a[r],a[l]);
        return;
    }
    int pind=getPivot(l,r);
    int p=a[pind];
    int i=l, j=r;
    while(i<=j)
    {
        while(a[i]<p)i++;
        while(a[j]>p)j--;
        if(i<=j)
        {
            swap(a[i],a[j]);
            i++;
            j--;
        }
    }
    quicksort(l,i-1);
    quicksort(i,r);
}
int main()
 {
     srand(time(NULL));
    int i,n;
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    cin>>n;
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    quicksort(0,n-1);
    for(i=0;i<n;i++)
        printf("%d ",a[i]);

}