Pagini recente » Cod sursa (job #2692602) | Cod sursa (job #1643155) | Cod sursa (job #524341) | Cod sursa (job #3189796) | Cod sursa (job #1957104)
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
void osszefesules(int bal[], int jobb[], int t[], int nb, int nj){
int i = 0, j = 0, k = 0;
while(i < nb && j < nj){
if(bal[i] < jobb[j]){
t[k] = bal[i];
i++;
k++;
}
else{
t[k] = jobb[j];
j++;
k++;
}
}
while(i < nb){
t[k] = bal[i];
i++;
k++;
}
while(j < nj){
t[k] = jobb[j];
j++;
k++;
}
}
void rendez(int t[], int n){
if(n < 2)
return;
int k = n / 2;
int *bal, *jobb;
bal = (int*)malloc(k * sizeof(int));
jobb = (int*)malloc((n - k) * sizeof(int));
int i;
for(i = 0; i < k; i++)
bal[i] = t[i];
for(i = k; i < n; i++)
jobb[i-k] = t[i];
rendez(bal, k);
rendez(jobb, n-k);
osszefesules(bal, jobb, t, k, n-k);
free(bal);
free(jobb);
}
int main()
{
int iter, h, *tomb;
f >> h;
tomb = (int*)malloc(h * sizeof(int));
for(iter = 0; iter < h; iter++)
f >> tomb[iter];
rendez(tomb, h);
for(iter = 0; iter < h; iter++)
g << tomb[iter] << " ";
free(tomb);
return 0;
}