16static void merge_str(
char **arr,
char **aux,
size_t lo,
size_t mid,
size_t hi) {
17 for (
size_t k = lo; k <= hi; k++) aux[k] = arr[k];
19 size_t i = lo, j = mid + 1, k = lo;
20 while (i <= mid && j <= hi) {
21 if (strcmp(aux[i], aux[j]) <= 0) arr[k++] = aux[i++];
22 else arr[k++] = aux[j++];
24 while (i <= mid) arr[k++] = aux[i++];
25 while (j <= hi) arr[k++] = aux[j++];
30 size_t mid = lo + (hi - lo) / 2;
38 char **aux = malloc(n *
sizeof(
char *));
46static void merge_int(
int *arr,
int *aux,
size_t lo,
size_t mid,
size_t hi) {
47 for (
size_t k = lo; k <= hi; k++) aux[k] = arr[k];
49 size_t i = lo, j = mid + 1, k = lo;
50 while (i <= mid && j <= hi) {
51 if (aux[i] <= aux[j]) arr[k++] = aux[i++];
52 else arr[k++] = aux[j++];
54 while (i <= mid) arr[k++] = aux[i++];
55 while (j <= hi) arr[k++] = aux[j++];
60 size_t mid = lo + (hi - lo) / 2;
68 int *aux = malloc(n *
sizeof(
int));
static void merge_int(int *arr, int *aux, size_t lo, size_t mid, size_t hi)
static void merge_sort_str_recursive(char **arr, char **aux, size_t lo, size_t hi)
static void merge_str(char **arr, char **aux, size_t lo, size_t mid, size_t hi)
static void merge_sort_int_recursive(int *arr, int *aux, size_t lo, size_t hi)
void merge_sort_strings(char **arr, size_t n)
void merge_sort_ints(int *arr, size_t n)
Unified header for all sorting algorithms.