Сортировка слиянием Си

Пожалуйста помогите реализовать функцию

int merge ( const int *a , int ak , const int *b , int bk , int * res );

Где а - первая последовательность. Уже отсортирована по возрастанию
аk - кол-во элементов в а
b - вторая последовательность. Уже отсортирована по возрастанию
bk - кол-во элементов b
res - последовательность которая должна получится после слияния.

мой неработающий код:

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

void merge ( const int *a , int ak , const int *b , int bk , int * res )
 {
         if (ak > bk) {
    
    for (int j = 0; j < ak; j++){
        if (a[j] > b[j]) res[j] = a[j];
        else res[j] = b[j];

    }
  
}  else {
      for (int j = 0; j < bk; j++){
        if (a[j] > b[j]) res[j] = a[j];
        else res[j] = b[j];
      }
   }
}
int main()
{
 FILE* inside = fopen("imp.txt", "rb");
 FILE* outside = fopen("ump.txt","wb");
 unsigned int n;
 fread(&n, sizeof(n), 1, inside);  //first 4 bytes

 int *pn = malloc(n * sizeof(n));

 unsigned int m;
 fread(&m, sizeof(m), 1, inside);
 int *pm = malloc(m * sizeof(m));

 for(int w = 0; w < n; w++){
    fread(&pn[w], sizeof(n), 1, inside);
 }
 for(int w = 0; w < n; w++){
    fread(&pm[w], sizeof(m), 1, inside);
 }

 int *result = malloc(n * sizeof(int));
 merge(pn, n, pm, m, result);
 fwrite(&result,sizeof(result), 1, outside);
 fclose(inside);
 fclose(outside);
 return 0;
 }
}

Ответы (0 шт):