Cod sursa(job #1825304)

Utilizator Eduard6421Eduard Gabriel Eduard6421 Data 8 decembrie 2016 22:50:59
Problema Sortare Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <stdio.h>
#include <stdlib.h>


void swap(int *a,int *b)
{
    int c;
    c=*a;
    *a=*b;
    *b=c;


}


int randomized_partition(int *v,int p,int r)
{
    int pivot_index = p + rand()%(r-p+1);
    int pivot = v[pivot_index];
    int i=p-1;
    int j;

    swap(&v[pivot_index],&v[r]);

    for(j=p; j<r; ++j)
    {
        if(v[j]<pivot)
        {
            ++i;
            swap(&v[j],&v[i]);

        }

    }

    swap(&v[i+1],&v[r]);
    return i+1;



}


void randomized_quick_sort(int *v,int p,int r)
{
    if(p<r)
    {
        int q = randomized_partition(v,p,r);
        randomized_quick_sort(v,p,q-1);
        randomized_quick_sort(v,q+1,r);

    }



}




int main()
{
    freopen("sortare.in","r",stdin);
    freopen("sortare.out","w",stdout);


    int n;
    int *v;
    int i;
    scanf("%d",&n);
    v = malloc(sizeof(int)*n);

    for(i=0; i<n; ++i)
        scanf("%d",&*(v+i));

    randomized_quick_sort(v,0,n-1);

    for(i=0; i<n; ++i)
        printf("%d ",v[i]);




    return 0;
}