Cómo invertir una matriz en C ++, Python y JavaScript

Una matriz es una colección de elementos almacenados en ubicaciones de memoria contiguas. La inversión de una matriz es una de las operaciones más comunes que se realizan en una matriz. En este artículo, aprenderá a escribir su propia implementación de inversión de una matriz utilizando enfoques iterativos y recursivos.

Enfoque iterativo para invertir una matriz

Planteamiento del problema

Se le da una matriz arr . Necesita invertir los elementos de la matriz, luego imprimir la matriz invertida. Necesita implementar esta solución usando bucles.

Ejemplo 1 : Sea arr = [45, 12, 67, 63, 9, 23, 74]

Arr invertido = [74, 23, 9, 63, 67, 12, 45]

Por lo tanto, la salida es: 74 23 9 63 67 12 45.

Ejemplo 2 : Sea arr = [1, 2, 3, 4, 5, 6, 7, 8]

Arr invertido = [8, 7, 6, 5, 4, 3, 2, 1]

Por tanto, la salida es: 8 7 6 5 4 3 2 1.

Enfoque para invertir una matriz mediante bucles

Puede revertir los elementos de una matriz usando bucles siguiendo el enfoque a continuación:

  1. Inicialice las variables de índice "i" y "j" de manera que apunten al primer (0) y al último (sizeOfArray – 1) índice de la matriz, respectivamente.
  2. En un bucle, intercambie el elemento en el índice i con el elemento en el índice j.
  3. Incrementa el valor de i en 1 y disminuye el valor de j en 1.
  4. Ejecute el ciclo hasta que i <sizeOfArray / 2.

Programa C ++ para invertir una matriz usando bucles

A continuación se muestra el programa C ++ para revertir una matriz usando bucles:

 // C++ program to reverse the elements of an array using loops
#include <iostream>
using namespace std;

void reverseArr(int arr[], int size)
{
for(int i=0, j=size-1; i<size/2; i++, j--)
{
swap(arr[i], arr[j]);
}
}
void printArrayElements(int arr[], int size)
{
for(int i=0; i<size; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
// Driver Code
int main()
{
int arr[] = {45, 12, 67, 63, 9, 23, 74};
int size = sizeof(arr)/sizeof(arr[0]);
// Printing the original array
cout << "Original Array: " << endl;
printArrayElements(arr, size);
// Reversing the array
reverseArr(arr, size);
// Printing the reversed array
cout << "Reversed array: " << endl;
printArrayElements(arr, size);
return 0;
}

Producción:

 Original Array:
45 12 67 63 9 23 74
Reversed array:
74 23 9 63 67 12 45

Relacionado Cómo invertir una cadena en C ++, Python y JavaScript

Programa de Python para invertir una matriz usando bucles

A continuación se muestra el programa de Python para revertir una matriz usando bucles:

 # Python program to reverse the elements of a list using loops
def reverseList(arr, size):
i = 0
j = size-1
while i<size/2:
arr[i], arr[j] = arr[j], arr[i]
i = i + 1
j = j - 1
def printListElements(arr, size):
for i in range(size):
print(arr[i], end=" ")
print()
# Driver Code
arr = [45, 12, 67, 63, 9, 23, 74]
size = len(arr)
# Printing the original array
print("Original Array:")
printListElements(arr, size)
# Reversing the array
reverseList(arr, size)
# Printing the reversed array
print("Reversed Array:")
printListElements(arr, size)

Producción:

 Original Array:
45 12 67 63 9 23 74
Reversed array:
74 23 9 63 67 12 45

Programa JavaScript para invertir una matriz usando bucles

A continuación se muestra el programa JavaScript para revertir una matriz usando bucles:

Relacionado: Introducción al algoritmo de clasificación por fusión

 // JavaScript program to reverse the elements of an array using loops
function reverseArr(arr, size) {
for(let i=0, j=size-1; i<(size)/2; i++, j--) {
[arr[i], arr[j]] = [arr[j], arr[i]];
}
}
function printArrayElements(arr, size) {
for(let i=0; i<size; i++) {
document.write(arr[i] + " ");
}
document.write("<br>");
}
// Driver Code
var arr = [45, 12, 67, 63, 9, 23, 74];
var size = arr.length;
// Printing the original array
document.write("Original Array: " + "<br>");
printArrayElements(arr, size);
// Reversing the array
reverseArr(arr, size);
// Printing the reversed array
document.write("Reversed Array: " + "<br>");
printArrayElements(arr, size);

Producción:

 Original Array:
45 12 67 63 9 23 74
Reversed array:
74 23 9 63 67 12 45

Enfoque recursivo para invertir una matriz

Planteamiento del problema

Se le da una matriz arr . Necesita invertir los elementos de la matriz, luego imprimir la matriz invertida. Debe implementar esta solución mediante la recursividad.

Ejemplo 1 : Sea arr = [45, 12, 67, 63, 9, 23, 74]

Arr invertido = [74, 23, 9, 63, 67, 12, 45]

Por lo tanto, la salida es 74 23 9 63 67 12 45.

Ejemplo 2 : Sea arr = [1, 2, 3, 4, 5, 6, 7, 8]

Arr invertido = [8, 7, 6, 5, 4, 3, 2, 1]

Por tanto, la salida es 8 7 6 5 4 3 2 1.

Enfoque para invertir una matriz mediante recursividad

Puede revertir los elementos de una matriz utilizando la recursividad siguiendo el enfoque a continuación:

  1. Inicialice las variables de índice start y end de manera que apunten al primer (0) y al último (sizeOfArray – 1) índice de la matriz, respectivamente.
  2. Cambie el elemento al inicio del índice con el elemento al final del índice.
  3. Llame de forma recursiva a la función inversa. En los parámetros de la función inversa, incremente el valor de inicio en 1 y disminuya el valor de final en 1.
  4. Detenga la recursividad cuando el valor de la variable inicial sea ​​mayor o igual que el valor de la variable final .

Programa C ++ para invertir una matriz mediante recursividad

A continuación se muestra el programa C ++ para revertir una matriz mediante la recursividad:

 // C++ program to reverse an array using recursion
#include <iostream>
using namespace std;
void reverseArr(int arr[], int start, int end)
{
if (start >= end)
{
return;
}
swap(arr[start], arr[end]);
reverseArr(arr, start+1, end-1);
}
void printArrayElements(int arr[], int size)
{
for(int i=0; i<size; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
// Driver Code
int main()
{
int arr[] = {45, 12, 67, 63, 9, 23, 74};
int size = sizeof(arr)/sizeof(arr[0]);
// Printing the original array
cout << "Original Array: " << endl;
printArrayElements(arr, size);
// Reversing the array
reverseArr(arr, 0, size-1);
// Printing the reversed array
cout << "Reversed array: " << endl;
printArrayElements(arr, size);
return 0;
}

Producción:

 Original Array:
45 12 67 63 9 23 74
Reversed array:
74 23 9 63 67 12 45

Programa de Python para revertir una matriz usando recursividad

A continuación se muestra el programa de Python para revertir una matriz usando la recursividad:

Relacionado: Programación dinámica: ejemplos, problemas comunes y soluciones

 # Python program to reverse an array using recursion
def reverseList(arr, start, end):
if start >= end:
return
arr[start], arr[end] = arr[end], arr[start]
reverseList(arr, start+1, end-1)
def printListElements(arr, size):
for i in range(size):
print(arr[i], end=" ")
print()
# Driver Code
arr = [45, 12, 67, 63, 9, 23, 74]
size = len(arr)
# Printing the original array
print("Original Array:")
printListElements(arr, size)
# Reversing the array
reverseList(arr, 0, size-1)
# Printing the reversed array
print("Reversed Array:")
printListElements(arr, size)

Producción:

 Original Array:
45 12 67 63 9 23 74
Reversed array:
74 23 9 63 67 12 45

Programa JavaScript para invertir una matriz mediante recursividad

A continuación se muestra el programa JavaScript para revertir una matriz mediante la recursividad:

Relacionado: Cómo encontrar la suma de números naturales usando la recursividad

 // JavaScript program to reverse an array using recursion
function reverseArr(arr, start, end)
{
if (start >= end)
{
return;
}
[arr[start], arr[end]] = [arr[end], arr[start]];
reverseArr(arr, start+1, end-1);
}
function printArrayElements(arr, size)
{
for(let i=0; i<size; i++)
{
document.write(arr[i] + " ");
}
document.write("<br>");
}
// Driver Code
var arr = [45, 12, 67, 63, 9, 23, 74];
let size = arr.length;
// Printing the original array
document.write("Original Array: " + "<br>");
printArrayElements(arr, size);
// Reversing the array
reverseArr(arr, 0, size-1);
// Printing the reversed array
document.write("Reversed Array: " + "<br>");
printArrayElements(arr, size);

Producción:

 Original Array:
45 12 67 63 9 23 74
Reversed array:
74 23 9 63 67 12 45

Utilice la recursividad para resolver problemas

Una función recursiva es una función que se llama a sí misma. En la recursividad, un problema se resuelve dividiendo los problemas en versiones más pequeñas y simples de sí mismos.

Hay muchas ventajas de la recursividad: el código recursivo es más corto que un código iterativo, se puede usar para resolver los problemas que son naturalmente recursivos, se puede usar en evaluaciones de infijo, prefijo, postfijo, la recursividad reduce el tiempo necesario para escribir y código de depuración, etc.

La recursividad es un tema favorito de los entrevistadores en las entrevistas técnicas. Debe conocer la recursividad y cómo usarla mientras escribe código para ser el programador más eficiente que pueda ser.