Pagini recente » Profil Arabescu | Cod sursa (job #2001937) | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #1182284)
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
#define DMAX 500001
int v[DMAX], n;
void read (){
int i;
fin >> n;
for (i = 0; i < n; i++) fin >> v[i];
}
int partition (int p, int r){
int x = v[r], i = p - 1;
for (int j = p; j <= r - 1; j++){
if (v[j] <= x){
swap(v[++i], v[j]);
}
}
swap(v[++i], v[r]);
return i;
}
void quicksort (int p, int r){
int q = 0;
if (p < r){
q = partition(p, r);
quicksort(p, q - 1);
quicksort(q + 1, r);
}
}
void write(){
int i = 0;
for (i = 0; i < n; i++) fout << v[i] << ' ';
}
int main(){
read();
quicksort(0, n-1);
write();
return 0;
}