Cod sursa(job #2295948)

Utilizator stan_flaviusStan Flavius Stefan stan_flavius Data 4 decembrie 2018 01:26:37
Problema Sortare prin comparare Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#include <cstdlib>
#define nmax 500001

using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");

int n,a[nmax];

int AlegRandPivot(int st,int dr)
{ int random=st+rand()%(dr-st);
  return random;
}

int partitie(int st, int dr)
{ int pivot=a[dr];
  int i,j;
  i=st-1;
  for(j=st; j<=dr; j++)
      if(a[j]<pivot) {i++; swap(a[i],a[j]);}
  swap(a[i+1],a[dr]);
  return i+1;
}

void QuickSort(int st,int dr)
{ if(st<dr)
     { int p=AlegRandPivot(st,dr);
       swap(a[p],a[dr]);;
       int pivot=partitie(st,dr);
       QuickSort(st,pivot-1);
       QuickSort(pivot+1,dr);
     }
}

int main()
{ fin>>n;
  int i;
  for(i=1; i<=n; i++) fin>>a[i];
  QuickSort(1,n);
  for(i=1; i<=n; i++) fout<<a[i]<<" ";
    return 0;
}