Cómo escribir un programa en C para buscar los elementos usando el orden de fusión

Primero debe saber que diciendo “en C” en su pregunta habló sobre la implementación.

La ordenación por fusión es un algoritmo de división y conquista.

  1. Divide repetidamente la matriz en dos mitades del mismo tamaño.
  2. Las instancias más pequeñas se resuelven
  3. La solución obtenida para las instancias más pequeñas se combina o combina para obtener la solución.

El desbordamiento de pila es bueno para este tipo de preguntas

Aqui no

#include

#define max 10

int a [10] = {10, 14, 19, 26, 27, 31, 33, 35, 42, 44};

int b [10];

fusión nula (int bajo, int medio, int alto) {

int l1, l2, i;

para (l1 = bajo, l2 = medio + 1, i = bajo; l1 <= medio && l2 <= alto; i ++) {

si (a [l1] <= a [l2])

b [i] = a [l1 ++];

más

b [i] = a [l2 ++];

}

mientras (l1 <= medio)

b [i ++] = a [l1 ++];

mientras que (l2 <= alto)

b [i ++] = a [l2 ++];

para (i = bajo; i <= alto; i ++)

a [i] = b [i];

}

tipo vacío (int bajo, int alto) {

int mid;

si (bajo <alto) {

medio = (bajo + alto) / 2;

tipo (bajo, medio);

ordenar (medio + 1, alto);

fusión (baja, media, alta);

} más {

regreso;

}

}

int main () {

int i;

printf (“Lista antes de ordenar \ n”);

para (i = 0; i <= max; i ++)

printf (“% d”, a [i]);

ordenar (0, max);

printf (“\ nLista después de ordenar \ n”);

para (i = 0; i <= max; i ++)

printf (“% d”, a [i]);

}