Pagini recente » Cod sursa (job #407189) | Cod sursa (job #2238264) | Cod sursa (job #1878211) | Cod sursa (job #1853985) | Cod sursa (job #2237612)
#include <bits/stdc++.h>
using namespace std;
int v[500001];
int copie[500001];
int randomGenerator () {
return (rand() << 14) + rand(); ///rand -> numar random intre 0 si 2^16 - 1
}
int randomGeneratorInterval (int st, int dr) {
return randomGenerator() % (dr - st + 1) + st;
}
ifstream fin("algsort.in");
ofstream fout("algsort.out");
void quicksortt(int st, int dr){
if(dr - st <= 0) return;
int x = randomGeneratorInterval(st , dr), p = st;
for(int i = st; i <= dr; ++i){
if(v[i] <= v[x] && i != x) copie[p++] = v[i];
}
int k = p;
copie[p++] = v[x];
for(int i = st ;i <= dr; ++i){
if(v[i] > v[x]) copie[p++] = v[i];
}
for(int i = st; i <= dr; i++){
v[i] = copie[i];
}
quicksortt(st, k - 1);
quicksortt(k + 1, dr);
}
int main() {
int n;
fin >> n;
for(int i = 1; i <= n; ++i){
fin >> v[i];
}
quicksortt(1, n);
for(int i = 1; i <= n; ++i) fout << v[i] << " " ;
return 0;
}