Pagini recente » Cod sursa (job #244304) | Cod sursa (job #1078278) | Cod sursa (job #3263959) | Cod sursa (job #627116) | Cod sursa (job #2061002)
#include<cstdio>
#define MAX_N 500000
using namespace std;
int v[MAX_N], n;
void Merge(int left, int mid, int right) {
int i = left, j = mid+1, k = 0;
int b[MAX_N];
while(i <= mid && j <= right) {
if(v[i] <= v[j])
b[k++] = v[i++];
else b[k++] = v[j++];
}
while(i <= mid)
b[k++] = v[i++];
while(j <= right)
b[k++] = v[j++];
for(i=left; i<=right; i++)
v[i] = b[i-left];
}
void mergeSort(int left, int right) {
if(right > left) {
int mid = (left + right) >> 1;
mergeSort(left,mid);
mergeSort(mid+1,right);
Merge(left,mid,right);
}
}
int main() {
FILE *fin, *fout;
fin = fopen("algsort.in","r");
fout = fopen("algsort.out","w");
fscanf(fin,"%d",&n);
for(int i=0; i<n; i++)
fscanf(fin,"%d",&v[i]);
fclose(fin);
mergeSort(0,n-1);
for(int i=0; i<n; i++)
fprintf(fout,"%d ",v[i]);
fprintf(fout,"\n");
fclose(fout);
return 0;
}