Pagini recente » Cod sursa (job #1821766) | Cod sursa (job #461614) | Cod sursa (job #702585) | Cod sursa (job #892493) | Cod sursa (job #1815887)
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
using namespace std;
int N;
int V[500000];
int random(int st, int dr){
return rand() % (dr-st+1) + st;
}
void quicksort(int st, int dr){
if(st >= dr)
return;
int r = random(st, dr);
// cout << "r=" << r << endl;
int p = V[r];
//cout << "p=" << p << endl;
int i = st;
int j = dr;
do{
while(V[i] < p && i<dr )
++i;
while(V[j] > p && j>st )
--j;
if(i<j){
swap(V[i], V[j]);
i++;
j--;
}
//cout << "i=" << i << " j=" << j << endl;
}
while(i<j);
i--;
j++;
quicksort(st, i);
quicksort(j, dr);
/*
if(k<j)
quicksort(st, j);
else
if(k>j)
quicksort(i, dr);
*/
}
void afis(){
for(int i=0; i<N; i++)
cout << V[i] << " ";
cout << endl;
}
int main(){
//freopen("algsort.in", "r", stdin);
//freopen("algsort.out", "w", stdout);
srand (time(NULL));
cin >> N;
for(int i=0; i<N; i++)
cin >> V[i];
quicksort(0, N-1);
afis();
return 0;
}