Pagini recente » Cod sursa (job #1514881) | Cod sursa (job #1275263) | Cod sursa (job #836449) | Cod sursa (job #1603370) | Cod sursa (job #2076554)
#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;
}