Pagini recente » Cod sursa (job #3191337) | Cod sursa (job #2206966) | Cod sursa (job #1604492) | Cod sursa (job #2034056) | Cod sursa (job #1218538)
#include <stdio.h>
#define dim 500001
int A[dim], B[dim], n;
void Interchange(int st, int dr, int mid)
{
int i=st, j=mid+1, k=st;
while( (i<=mid) && (j<=dr) ){
if(A[i]<=A[j]){
B[k++]=A[i++];
}else{
B[k++]=A[j++];
}
}
while( i<=mid ){
B[k++]=A[i++];
}
while( j<=dr ){
B[k++]=A[j++];
}
int t;
for(t=st; t<=dr; t++){
A[t]=B[t];
}
}
void MergeSort(int st, int dr)
{
if( st<dr ){
int mid=(st+dr)/2;
MergeSort(st,mid);
MergeSort(mid+1,dr);
Interchange(st,dr,mid);
}
}
int main()
{
FILE *fin;
fin = fopen("algsort.in","r");
FILE *fout;
fout = fopen("algsort.out","w");
fscanf(fin,"%d",&n);
int i;
for(i=0; i<n; i++ ){
fscanf(fin,"%d",A+i);
}
MergeSort(0,n-1);
for(i=0; i<n; i++){
fprintf(fout,"%d%c ",A[i],' ');
}
}