Pagini recente » Cod sursa (job #663562) | Cod sursa (job #1798600) | Cod sursa (job #3295606) | Cod sursa (job #2441517) | Cod sursa (job #1146986)
#include <stdio.h>
int v[500000], aux[500000];
void merge(int st, int m, int dr){
int k, i, j;
k=st;
i=st;
j=m;
while((i<m)&&(j<dr)){
if(v[i]<v[j]){
aux[k++]=v[i++];
}else{
aux[k++]=v[j++];
}
}
while(i<m){
aux[k++]=v[i++];
}
while(j<dr){
aux[k++]=v[j++];
}
for(i=st; i<dr; i++){
v[i]=aux[i];
}
}
void mergeSort(int st, int dr){
int m;
if(st>=dr){
return ;
}
m=st+((dr-st+1)>>1);
mergeSort(st, m-1);
mergeSort(m, dr);
merge(st, m, dr+1);
}
int main(){
int n, i;
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]);
}
mergeSort(0, n-1);
for(i=0; i<n; i++){
fprintf(fout, "%d ", v[i]);
}
fprintf(fout, "\n");
fclose(fin);
fclose(fout);
return 0;
}