Pagini recente » Cod sursa (job #1207272) | Cod sursa (job #2856187) | Cod sursa (job #2865256) | Cod sursa (job #968556) | Cod sursa (job #642673)
Cod sursa(job #642673)
#include <fstream>
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
long int v[500005], n;
//quicksort
void citeste () {
long int e;
fin>>n; for (e=1; e<=n; e++) fin>>v[e];
}
void schimba (long int *a, long int *b) {
long int aux;
aux=*a;
*a=*b;
*b=aux;
}
void sorteaza (long int v[], long int start, long int final) {
long int i, j, pivot, ales;
if (start<final) {
pivot=start+(final-start)/2;
schimba (&v[start], &v[pivot]);
ales=v[start];
i=start+1;
j=final;
while (i<=j) {
while ( (i<=final) && (v[i]<=ales) ) i++;
while ( (j>=start) && (v[j]>ales) ) j--;
if (i<j) schimba (&v[i], &v[j]);
}
schimba (&v[start], &v[j]);
sorteaza (v, start, j-1);
sorteaza (v, j+1, final);
}
}
void afiseaza () {
long int e; for (e=1; e<=n; e++) fout<<v[e]<<' ';
fout<<'\n';
}
int main () {
citeste ();
sorteaza (v, 1, n);
afiseaza ();
fout.close ();
return 0;
}