Pagini recente » Cod sursa (job #677770) | Cod sursa (job #1425541) | Cod sursa (job #1033999) | Rating Corban Alexandru Madalin (alexandru.corban) | Cod sursa (job #1119869)
#include<fstream>
using namespace std;
int v[500000];
void swap(int *a, int *b) {
int aux = *a;
*a = *b;
*b = aux;
}
int pivot(int l, int r) {
int i, j, p;
p = rand()%(r-l+1) + l;
swap(v+p, v+l);
p = l;
i = j = l+1;
for(; i <= r; i++) {
if(v[i] < v[p]) {
swap(v+i, v+j);
j++;
}
}
swap(v+j-1, v+p);
return j-1;
}
void qsort(int l, int r) {
if(l < r) {
int k = pivot(l, r);
qsort(l, k-1);
qsort(k+1, r);
}
}
int main() {
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n, i;
fin >> n;
for(i = 0; i < n; i++) fin >> v[i];
qsort(0, n-1);
for(i = 0; i < n; i++) fout << v[i] << " ";
return 0;
}