Pagini recente » Cod sursa (job #1385999) | Cod sursa (job #2568770) | Cod sursa (job #2941779) | Cod sursa (job #2731822) | Cod sursa (job #1103762)
#include<fstream>
#include<cstdlib>
#include<time.h>
#include<algorithm>
#define nMax 500005
using namespace std;
int N, V[nMax];
void Quick3Way(int lo, int hi){
if (hi <= lo)
return;
int lt = lo, gt = hi;
int idx = lo;
int v = V[lo];
while(idx <= gt){
if(V[idx] < v)
swap(V[lt ++], V[idx ++]);
else if(V[idx] > v)
swap(V[idx], V[gt --]);
else
idx ++;
}
Quick3Way(lo, lt - 1);
Quick3Way(gt + 1, hi);
}
void RandomShuffle(){
srand ( time(NULL) );
for(int i = 0; i < N; ++ i)
swap(V[i], V[rand() % N]);
}
int main(){
ifstream f("algsort.in");
ofstream g("algsort.out");
f >> N;
for(int i = 0; i < N; ++ i)
f >> V[i];
RandomShuffle();
Quick3Way(0, N - 1);
for(int i = 0; i < N; ++ i)
g << V[i] << " ";
f.close();
g.close();
return 0;
}