Pagini recente » Cod sursa (job #922462) | Borderou de evaluare (job #1036677) | Cod sursa (job #1897822) | Cod sursa (job #1671162) | Cod sursa (job #799180)
Cod sursa(job #799180)
#include<stdio.h>
#define Nmax 500002
int A[Nmax], N;
void intercls(int left, int mij, int right) {
int B[Nmax], i, j, k;
i = left;
j = mij+1;
k = 0;
while(i<=mij && j<=right) {
if(A[i] < A[j]) {
B[++k] = A[i];
i++;
}
else {
B[++k] = A[j];
j++;
}
}
for(; i<=mij; i++)
B[++k] = A[i];
for(; j<=right; j++)
B[++k] = A[j];
for(k=1, i=left; i<=right; i++, k++)
A[i] = B[k];
}
void merge_sort(int left, int right) {
if(left == right)
return;
int mij = (left+right)/2;
merge_sort(left,mij);
merge_sort(mij+1,right);
intercls(left,mij,right);
}
int main() {
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&N);
for(int i=1; i<=N; i++)
scanf("%d",&A[i]);
merge_sort(1,N);
for(int i=1; i<=N; i++)
printf("%d ",A[i]);
printf("\n");
return 0;
}