Pagini recente » Cod sursa (job #1674693) | Cod sursa (job #2820945) | Cod sursa (job #542906) | Cod sursa (job #2334752) | Cod sursa (job #642641)
Cod sursa(job #642641)
#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)/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;
}
//sortare prin selectie
/*long int n, v[500005], i, j, mn, pmin;
void citeste () {
fin>>n; for (i=1; i<=n; i++) fin>>v[i];
}
void sorteaza () {
for (i=1; i<n; i++) {
mn=v[i]; pmin=i;
for (j=i+1; j<=n; j++)
if (v[j]<mn) { mn=v[j]; pmin=j; }
v[pmin]=v[i];
v[i]=mn;
fout<<v[i]<<' ';
}
fout<<v[n]<<'\n';
}
int main () {
citeste ();
sorteaza ();
fout.close ();
return 0;
}*/