Pagini recente » Cod sursa (job #1729676) | Cod sursa (job #866397) | Cod sursa (job #1548573) | Cod sursa (job #513550) | Cod sursa (job #554191)
Cod sursa(job #554191)
#include<stdio.h>
int v[500001],n;
void citire()
{
FILE*f=fopen("algsort.in","r");
fscanf(f,"%d",&n);
for(int i=0;i<n;i++) fscanf(f,"%d",&v[i]);
fclose(f);
}
void scriere()
{
FILE*f=fopen("algsort.out","w");
for(int i=0;i<n;i++) fprintf(f,"%d ",v[i]);
fclose(f);
}
void Interclasare(int A[],int st,int m,int dr)
{
int *B = new int[dr-st+1];
int i=st, j=m+1, k=0;
while(i<=m && j<=dr)
if(A[i] <= A[j] )
B[k++] = A[i++] ;
else B[k++] = A[j++];
while ( i<=m ) B[k++] = A[i++];
while (j <= dr) B[k++] = A[j++];
for(i=0;i<k;i++) A[st+i] = B[i];
delete []B;
}
void MergeSort(int A[],int st,int dr)
{
if(st<dr)
{
int m=(st+dr)/2;
MergeSort(A,st,m);
MergeSort(A,m+1,dr);
Interclasare(A,st,m,dr);
}
}
int main()
{
citire();
MergeSort(v,0,n-1);
scriere();
return 0;
}