Cod sursa(job #2076554)

Utilizator Andrei243Nitu Mandel Andrei Andrei243 Data 26 noiembrie 2017 19:17:45
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <time.h>

using namespace std;

int v[5000000];
ifstream in("algsort.in");
ofstream out("algsort.out");



int divide(int p,int q){
int st=p,dr=q;
srand(time(NULL));
int poz=rand()%(q-p+1)+p;
int aux=v[p];
v[p]=v[poz];
v[poz]=aux;
int x=v[p];
while(st<dr){

while(st<dr&&v[dr]>=x)dr--;
v[st]=v[dr];

while(st<dr&&v[st]<=x)st++;
v[dr]=v[st];
}
v[st]=x;
return st;

}

void Qsort(int p, int q){

int m=divide(p,q);

if(m-1>p)Qsort(p,m-1);
if(m+1<q)Qsort(m+1,q);
}



int main()
{int n;
in>>n;
for(int i=0;i<n;i++)in>>v[i];
Qsort(0,n-1);
for(int i=0;i<n;i++)out<<v[i]<<' ';

    return 0;
}