Pagini recente » Cod sursa (job #2767489) | Cod sursa (job #18117) | Cod sursa (job #815029) | Cod sursa (job #885657) | Cod sursa (job #1335570)
#include <stdio.h>
#define MAXN 500000
int v[MAXN], aux[MAXN];
inline void merge(int a, int b, int x, int y){
int i=a, j=x, k=0;
while((i<=b)&&(j<=y)){
if(v[i]<v[j]){
aux[k++]=v[i];
i++;
}else{
aux[k++]=v[j];
j++;
}
}
while(i<=b){
aux[k++]=v[i];
i++;
}
while(j<=y){
aux[k++]=v[j];
j++;
}
for(i=a, j=0; i<=y; i++, j++){
v[i]=aux[j];
}
}
void myMergeSort(int st, int dr){
int m=(st+dr)/2;
if(st<m){
myMergeSort(st, m);
}
if(m+1<dr){
myMergeSort(m+1, dr);
}
merge(st, m, m+1, dr);
}
int main(){
int i, n;
FILE *fin, *fout;
fin=fopen("algsort.in", "r");
fout=fopen("algsort.out", "w");
fscanf(fin, "%d", &n);
for(i=0; i<n; i++){
fscanf(fin, "%d", &v[i]);
}
myMergeSort(0, n-1);
for(i=0; i<n-1; i++){
fprintf(fout, "%d ", v[i]);
}
fprintf(fout, "%d\n", v[i]);
fclose(fin);
fclose(fout);
return 0;
}