Public feed
#722317
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <time.h>
#define maxint 2147483647;
#define minint -2137483647;
void merge(float* A,int p,int q,int r,int ord){
int i,j,k;
int n1=q-p+1;
int n2=r-q;
float L[n1];
float R[n2];
/* printf("q=%d,p=%d,r=%d,n1=%d,n2=%d\n",q,p,r,n1,n2); */
for(i=0; i<n1; i++)
L[i]=A[p+i];
for(j=0; j<n2; j++)
R[j]=A[q+j+1];
if(ord==0){
L[n1]=maxint;
R[n2]=maxint;
}
else{
L[n1]=minint;
R[n2]=minint;
}
i=0;
j=0;
/* for(i=0;i<=4;i++){ */
/* printf("L=%d,R=%d,i%d,j%d\n",L[i],R[j],i,j); */
/* j++; */
/* } */
int l=0;
for(k=p; k<=r; k++){
// printf("Before: A1=%f,L1=%f,R1=%f\ni%d,j%d,l%d\n",A[l],L[i],R[j],i,j,l);
if(ord==0){
if(L[i]<=R[j]){
A[k]=L[i];
// printf("After: A1=%f,L1=%f,R1=%f\ni%d,j%d,l%d\n",A[l],L[i],R[j],i,j,l);
i++;
}
else{
A[k]=R[j];
// printf("After: A2=%f,L2=%f,R2=%f\ni%d,j%d,l%d\n",A[l],L[i],R[j],i,j,l);
j++;
}
}
else{
if(L[i]>=R[j]){
A[k]=L[i];
// printf("After: A1=%f,L1=%f,R1=%f\ni%d,j%d,l%d\n",A[l],L[i],R[j],i,j,l);
i++;
}
else{
A[k]=R[j];
// printf("After: A2=%f,L2=%f,R2=%f\ni%d,j%d,l%d\n",A[l],L[i],R[j],i,j,l);
j++;
}
}
l++;
}
return;
}
void mergesort(float* A,int p,int r,int ord){
int q;
if(p<r){
q=(p+r)/2;
mergesort(A,p,q,ord);
mergesort(A,q+1,r,ord);
merge(A,p,q,r,ord);
}
return;
}
int main(int argc,char* argv[]){
float A[atoi(argv[2])];
float B[2*atoi(argv[2])];
FILE *file;
FILE *newfile;
if(argc!=4)
printf("error - invalid number of arguments: need 4 for proper execution\n");
else{
file=fopen(argv[1],"r");
if(file==NULL)
fprintf(stderr,"Could not open file %s :(\n","file");
else{
int i=0;
int j=0;
char line[10];
while((fgets(line,sizeof(line),file)!=NULL) && (i<=2*atoi(argv[2]))){
B[i]=atof(line);
printf("B[%d]=%f\n\n",i,B[i]);
i++;
}
for(i=0;i<=atoi(argv[2]);i++){
A[i]=B[j];
printf("A[%d]=%f\n",i,A[i]);
j+=2;
}
fclose(file);
mergesort(A,0,atoi(argv[2]),atoi(argv[3]));
newfile=fopen("msort.txt","w");
int k;
if(newfile==NULL)
fprintf(stderr,"Could not create file %s :(\n","newfile");
else{
for(k=0; k<=atoi(argv[2]); k++){
fprintf(newfile, "%f\n", A[k]);
printf("a[%d]=%f\n",k,A[k]);
}
}
fclose(newfile);
}
}
return 0;
}
/* int main(void){ */
/* float A[8]; */
/* int j=9; */
/* int i; */
/* float b[8]; */
/* b[0]=2; */
/* b[1]=4; */
/* b[2]=5; */
/* b[3]=7; */
/* b[4]=1; */
/* b[5]=2; */
/* b[6]=3; */
/* b[7]=6; */
/* A[0]=2; */
/* A[1]=4; */
/* A[2]=5; */
/* A[3]=7; */
/* A[4]=1; */
/* A[5]=2; */
/* A[6]=3; */
/* A[7]=6; */
/* while(j!=-1){ */
/* A[i]=j; */
/* i++; */
/* j--; */
/* } */
/* for(i=0;i<8;i++) */
/* printf("b=%d\n",b[i]); */
/* mergesort(b,0,7,0); */
/* mergesort(A,0,7,1); */
/* for(i=0;i<=7;i++){ */
/* printf("b[%d]=%f A[%d]=%f\n",i,b[i],i,A[i]); */
/* } */
/* return 0; */
/* } */