Pagini recente » Cod sursa (job #1086143) | Cod sursa (job #1852024) | Cod sursa (job #3200776) | Cod sursa (job #1811141) | Cod sursa (job #2672140)
#include <stdio.h>
#include <stdlib.h>
int v[500000],a[500000];
void mergesort(int left, int right){
int i, mid;
if(left!=right){
mid=(left+right)/2;
mergesort(left,mid);
mergesort(mid+1,right);
for(i=left;i<=right;i++){
a[i]=v[i];
}
merge(left,mid,right);
}
}
void merge(int left, int mid, int right){
int i=left, j=mid+1, vi=left;
while(i<=mid&&j<=right){
if(a[i]<=a[j]){
v[vi]=a[i];
vi++;
i++;
} else{
v[vi]=a[j];
vi++;
j++;
}
}
while(i<=mid){
v[vi]=a[i];
vi++;
i++;
}
while(j<=right){
v[vi]=a[j];
vi++;
j++;
}
}
int main(){
int n,i;
FILE *fin, *fout;
fin=fopen("algsort.in","r");
fscanf(fin,"%d",&n);
for(i=0;i<n;i++){
fscanf(fin,"%d",&v[i]);
}
fclose(fin);
mergesort(0,n-1);
fout=fopen("algsort.out","w");
for(i=0;i<n;i++)
fprintf(fout,"%d ",v[i]);
fclose(fout);
return 0;
}