Pagini recente » Cod sursa (job #1880417) | Cod sursa (job #2699158) | Cod sursa (job #1901947) | Cod sursa (job #1090802) | Cod sursa (job #2267004)
#include <fstream>
using namespace std;
int v[500010], w[500010];
int n;
ifstream fin ("algsort.in");
ofstream fout("algsort.out");
int poz(int st, int dr) {
int dst = 0;
int ddr = -1;
int aux;
while (st < dr) {
if (v[st] > v[dr]) {
aux = v[st];
v[st] = v[dr];
v[dr] = aux;
aux = dst;
dst = -ddr;
ddr = -aux;
}
st += dst;
dr += ddr;
}
return st;
}
void sorteaza(int st, int dr) {
if (st < dr) {
int p = poz(st, dr);
/// aceasta functie va duce primul element din intervalul de indici
/// st,dr la locul lui si in plus tot ce e in stanga lui va fi
/// mai mic decat el si tot ce e in dreapta lui va fi mai mare ca el
sorteaza(st, p-1);
sorteaza(p+1, dr);
}
}
int main () {
fin>>n;
for (int i=1;i<=n;i++)
fin>>v[i];
sorteaza(1, n);
for (int i=1;i<=n;i++)
fout<<v[i]<<" ";
return 0;
}