归并类型,我朋友给我的原码,我大体改了改,能运行但是感觉还是不好

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<pthread.h>

typedef struct{
int start;
int end;
int arr[10];
}FH;
FH rs1={0,4,};
FH rs2={5,9,};
void* my(void* ret){
void Merge_Sort2(int arr[10],int start,int end);
FH* fh=(FH*)ret;
int a=fh->start;
int b=fh->end;
int c[10];
for(int i=0;i<10;i++){
c[i]=fh->arr[i];
}
Merge_Sort2(c,a,b);
for(int i=a;i<=b;i++){
fh->arr[i]=c[i];
}
return NULL;
}

int main(){
void Merge_Sort1(int arr[10],int start,int end);
void Merge(int arr[10],int start,int middle,int end);
int arr[10];

for(int i=0;i<10;i++){
    scanf("%d",&arr[i]);
}
for(int i=0;i<10;i++){
    rs1.arr[i]=arr[i];
}
for(int i=0;i<10;i++){
    rs2.arr[i]=arr[i];
}
Merge_Sort1(arr,0,9);
for(int i=0;i<=9;i++){
    printf("%d  ",arr[i]);
}
return 0;

}

void Merge_Sort1(int arr[10],int start,int end){
void Merge(int arr[10],int start,int middle,int end);
void Merge_Sort2(int arr[10],int start,int end);
int middle;
if(start<end){
middle=(start+end)/2;

    pthread_t th1;
    pthread_t th2;
  
    pthread_create(&th1,NULL,my,&rs1);
    pthread_create(&th2,NULL,my,&rs2);
  
    pthread_join(th1,NULL);
    for(int i=0;i<=4;i++){
    arr[i]=rs1.arr[i];
    }
    pthread_join(th2,NULL);
    for(int i=5;i<=9;i++){
    arr[i]=rs2.arr[i];
    }
    
    
    
    Merge(arr,start,middle,end);
}

}

void Merge_Sort2(int arr[10],int start,int end){
void Merge(int arr[10],int start,int middle,int end);
int middle;
if(start<end){
middle=(start+end)/2;
Merge_Sort2(arr,start,middle);
Merge_Sort2(arr,middle+1,end);
Merge(arr,start,middle,end);
}
}

void Merge(int arr[10],int start,int middle,int end){
int *n=(int )malloc(sizeof(int)(end-start+1));
int i=start,j=middle+1,k=0;
while((i<=middle)&&(j<=end)){
if(arr[i]<arr[j]){
n[k]=arr[i];
i++;k++;
}
else{
n[k]=arr[j];
j++;k++;
}
}
while(i<=middle){
n[k]=arr[i];
i++;k++;
}
while(j<=end){
n[k]=arr[j];
j++;k++;
}
for(int i=start,k=0;i<=end;i++,k++){
arr[i]=n[k];
}
free(n);
}