Pagini recente » Cod sursa (job #2758186) | Cod sursa (job #2336126) | Cod sursa (job #3164749) | Cod sursa (job #9392) | Cod sursa (job #2237610)
#include <bits/stdc++.h>
using namespace std;
int v[100001];
int copie[100001];
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() {
freopen("input", "r", stdin);
int n;
cin >> n;
for(int i = 1; i <= n; ++i){
cin >> v[i];
}
quicksortt(1, n);
for(int i = 1; i <= n; ++i) cout << v[i] << " " ;
return 0;
}