Pagini recente » Cod sursa (job #1969428) | Cod sursa (job #2167349) | Cod sursa (job #3002047) | Cod sursa (job #2167915) | Cod sursa (job #2210704)
#include <bits/stdc++.h>
using namespace std;
vector<int> v;
int poz = 0;
#define DIM 10000
char buffer[DIM];
void cit(int &n){
n = 0;
while(buffer[poz] > '9' || buffer[poz] < '0'){
if(++poz == DIM){
fread(buffer, sizeof(char), DIM, stdin);
poz = 0;
}
}
while(buffer[poz] >= '0' && buffer[poz] <= '9'){
n = n * 10 + buffer[poz] - '0';
if(++poz == DIM){
fread(buffer, sizeof(char), DIM, stdin);
poz = 0;
}
}
return;
}
int partitionn(int l, int r){
int pivot = rand() % (r - l + 1) + l;
swap(v[r], v[pivot]);
int i = l;
int j = l;
int x = v[r];
while(j != r){
if(v[j] >= x){
j++;
}else{
swap(v[j], v[i]);
i++;
j++;
}
}
swap(v[i], v[r]);
return i;
}
void quick_sort(int l, int r){
if(l == r || l > r){
return;
}
int q = partitionn(l, r);
quick_sort(l, q - 1);
quick_sort(q + 1, r);
}
void q_sort(){
quick_sort(0, v.size() - 1);
}
int main()
{
srand(time(NULL));
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
int n, x;
cit(n);
for(int i = 0; i < n; ++i){
cit(x);
v.push_back(x);
}
q_sort();
for(int i = 0; i < n; ++i){
printf("%d ",v[i]);
}
return 0;
}