Cod sursa(job #2081321)

Utilizator TeodorAxinteAxinte Teodor TeodorAxinte Data 4 decembrie 2017 16:38:22
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
const int N = 500010;
int n,i,v[N];
void quickSort(int,int);
int main()
{
    srand(time(NULL));
    fin>>n;
    for(i=1;i<=n;i++)fin>>v[i];
    quickSort(1,n);
    for(i=1;i<=n;i++)fout<<v[i]<<' ';

    return 0;
}
void quickSort(int Lo,int Hi)
{
    if(Lo>=Hi)return;
    int lo=Lo,hi=Hi,mi,pivot;
    mi=lo+rand()%(hi-lo+1);
    pivot = v[mi];
    do
    {
        while(v[lo]<pivot)lo++;
        while(v[hi]>pivot)hi--;
        if(lo<=hi){swap(v[lo],v[hi]);lo++;hi--;}
    }
    while(lo<=hi);
    if(Lo<hi)quickSort(Lo,hi);
    if(lo<Hi)quickSort(lo,Hi);
}