Cod sursa(job #480727)

Utilizator dicu_dariaDaria Dicu dicu_daria Data 29 august 2010 13:35:18
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<fstream>
#include<algorithm>
#include<cstdlib>
#include<ctime>
using namespace std;
int a[500005];
int partition(int p,int r)
{
    int x,i,j;
    x=a[p+(rand()%(r-p))];
    i=p-1; j=r+1;
    while(1)
    {
        do i++; while (a[i]<x);
        do j--; while (a[j]>x);
        if(i<j) swap(a[i],a[j]); else return j;
    }


}

void quicksort(int p,int r)
{
 int q;
 if(p<r)
 {
  q=partition(p,r);
  quicksort(p,q);
  quicksort(q+1,r);
 }
}
int main()
{
    int n,i;
    ifstream fi("algsort.in");
    ofstream fo("algsort.out");
    srand( time(NULL) );
    fi>>n;
    for(i=1;i<=n;i++) fi>>a[i];
    quicksort(1,n);
    for(i=1;i<=n;i++) fo<<a[i]<<" ";
    fo.close();
    return 0;

}