Quiero implementar un código C para revertir los elementos de una matriz utilizando una operación en el lugar y fuera de lugar. ¿Cuál es esta operación in situ y externa y cuál será la complejidad de este programa?

Los algoritmos en el lugar son el que hace lo que desea usar con un espacio de almacenamiento adicional pequeño y constante.

Fuera de lugar o no están los algoritmos que hacen lo que usted quiere usando un gran espacio de almacenamiento, a veces del mismo tamaño que su entrada, a veces más que eso.

Por ejemplo: desea multiplicar cada elemento de una matriz de tamaño 100K por 2. Entonces tiene dos opciones

  1. Ejecute un bucle en la matriz de entrada y cambie cada valor en esa matriz.

    arr[i] *= 2;

  2. Ejecute un bucle sobre la matriz de entrada y asigne otra matriz de unos 100K de tamaño y almacene los nuevos valores en ella.

    new_arr[i] = arr[i] * 2;

Entonces, en el segundo caso, no tiene un algoritmo en el lugar o fuera de lugar y un algoritmo en el lugar en el caso 1.

Ahora, para invertir una matriz en su lugar y fuera de lugar, supongo que debe almacenarlos y no simplemente imprimirlos. En este último caso, simplemente recursó o usó una pila.

  • En su lugar
    Ejecute un bucle hasta el medio. Mantenga dos índices, uno apuntando al primer elemento, otro al último. Iterar hasta el medio e intercambiar los valores en los dos índices.
  • Fuera de lugar
    Ejecute un bucle desde el último elemento hasta el primer elemento de la matriz y almacénelo en una nueva matriz. Observe que está utilizando una nueva matriz.

    Otra opción es mantener dos índices nuevamente, apuntando al primer elemento y al último elemento de la matriz de entrada y la nueva matriz, en lugar de intercambiarlos, simplemente colóquelos en una nueva matriz cada vez.
    El último elemento de la matriz de entrada irá al primer elemento de la nueva matriz. Así que ahora, muy similar a nuestro algoritmo anterior, iteraremos hasta el elemento n / 2.

    Es complicado, pero le permite comprender la diferencia entre los algoritmos in situ y no in situ, es solo el espacio de almacenamiento utilizado. La complejidad es la misma en ambos casos aquí.

¡Espero que esto ayude!

Deberías buscar en Google este tipo de preguntas.
Aquí hay un enlace útil.
Algoritmo en el lugar. ¡Espero eso ayude!