Pagini recente » Cod sursa (job #2696491) | Cod sursa (job #3179925) | Cod sursa (job #2138403) | Cod sursa (job #637512) | Cod sursa (job #642675)
Cod sursa(job #642675)
#include <cstdio>
//using namespace std;
FILE *fin, *fout; /*
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");*/
long int v[500005], n;
//quicksort
void citeste () {
fin=fopen ("algsort.in", "r");
long int e;
fscanf (fin, "%ld", &n); for (e=1; e<=n; e++) fscanf (fin, "%ld", &v[e]);
fclose (fin);
}
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 () {
fout=fopen ("algsort.out", "w");
long int e; for (e=1; e<=n; e++) fprintf (fout, "%ld ", v[e]);
fprintf (fout, "\n");
fclose (fout);
}
int main () {
citeste ();
sorteaza (v, 1, n);
afiseaza ();
//fout.close ();
return 0;
}