Pagini recente » Statistici Gheorghe Oana-Maria (gheorghe_oana_maria_325ca) | Diferente pentru implica-te/arhiva-educationala intre reviziile 7 si 6 | Istoria paginii runda/hlo_cj_av_l4 | Istoria paginii runda/simulare_ongm | Cod sursa (job #2649969)
#include <iostream>
using namespace std;
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int numbers[500001];
void quicksort(int start, int stop) {
if (start >= stop)
return;
int aux;
if (start == stop - 1) {
if (numbers[start] > numbers[stop]) {
aux = numbers[start];
numbers[start] = numbers[stop];
numbers[stop] = aux;
}
return;
}
int l = start+1, r=stop;
while(l < r) {
while(l < stop && numbers[l] < numbers[start])
++l;
while(r > start && numbers[r] >= numbers[start])
--r;
if (l < r) {
aux = numbers[r];
numbers[r] = numbers[l];
numbers[l] = aux;
}
}
aux = numbers[start];
numbers[start] = numbers[r];
numbers[r] = aux;
quicksort(start, l-1);
quicksort(r+1, stop);
}
int main() {
int n;
fin >> n;
for (int i=0; i<n; ++i)
fin >> numbers[i];
quicksort(0, n-1);
for(int i=0; i<n; ++i)
fout << numbers[i] << ' ';
return 0;
}