Pagini recente » Cod sursa (job #2683013) | Cod sursa (job #783701) | Cod sursa (job #592713) | Istoria paginii runda/oji_go_10 | Cod sursa (job #1019613)
#include <stdio.h>
#include <stdlib.h>
int v[500000],n;
void interclasare(int p,int m,int u){
int b[500001],i,j,k;
i=p;
j=m+1;
k=p;
while(i<=m && j<=u){
if(v[i]>v[j]){
b[k]=v[j];
k++;
j++;
}
else{
b[k]=v[i];
k++;
i++;
}
}
if(i<=m)
while(i<=m){
b[k]=v[i];
k++;
i++;
}
if(j<=u)
while(j<=u){
b[k]=v[j];
k++;
j++;
}
for(i=p;i<=u;i++){
v[i]=b[i];
}
}
void msort(int p,int u){
int mij,i;
if(p<u){
mij=(p+u)/2;
msort(p,mij);
msort(mij+1,u);
interclasare(p,mij,u);
}
}
int main()
{
FILE* f,*g;
f=fopen("algsort.in","r");
g=fopen("algsort.out","w");
int i;
fscanf(f,"%d",&n);
if(f){
for(i=0;i<n;i++){
fscanf(f,"%d",&v[i]);
}
}
else printf("Fisierul nu a putut fi deschis");
msort(0,n-1);
for(i=0;i<n;i++){
fprintf(g,"%d ",v[i]);
}
fclose(f);
fclose(g);
return 0;
}