Invertir una matriz en C#

Syed Hassan Sabeeh Kazmi 12 octubre 2023
  1. Escribir un Algoritmo para Invertir un Array en C#
  2. Utilice el método Array.Reverse() para invertir una matriz en C#
  3. Utilice el método Enumerable.Reverse() para invertir una matriz en C#
  4. Conclusión
Invertir una matriz en C#

Este tutorial le enseñará diferentes formas de invertir una matriz en C#, incluidos los métodos predefinidos. Generalmente requiere la creación de una variable temp para almacenar el primer valor de índice de una matriz temp = arr[0], almacenar el segundo valor de índice en arr[0] como arr[0] = arr[1], y almacenar el valor temp en arr[1].

Es un concepto general de invertir una matriz corta, y los bucles pueden ayudar a manejar las operaciones inversas en matrices grandes en C#.

Escribir un Algoritmo para Invertir un Array en C#

El arte del intercambio es extremadamente eficiente para invertir una matriz en C#. Es importante definir un par de variables llamadas startIndex y endIndex e inicializar sus valores con 0 y n-1, respectivamente, donde n representa la longitud de una matriz.

Puede implementar el concepto de intercambiar valores de ambas variables e incrementar el valor de startIndex en un medio +1 y disminuir el endIndex en uno (-1) en un algoritmo en C# usando el for bucle. Repita este paso hasta que el valor startIndex sea menor que el valor endIndex e imprima la matriz como una matriz invertida.

Es un enfoque simple para invertir una matriz sin usar algún espacio auxiliar solo intercambiando valores. Por lo tanto, la complejidad temporal del arreglo inverso es O(n), y su complejidad espacial es O(1).

Debe iterar solo a través de la primera mitad de una matriz arr.Length / 2. Al iterar a través de toda la matriz, arr.Length significa que la matriz se invertirá dos veces y generará el mismo resultado que la matriz original.

using System;

public class reverseArrayAlgo {
  public static void Main(string[] args) {
    // create an array containing five integer values
    int[] expArray = { 4, 5, 6, 7, 8 };

    // display the original array
    Console.Write("The elements of the original array: ");
    for (int rep = 0; rep < expArray.Length; rep++) {
      Console.Write(expArray[rep] + " ");
    }

    // call a method that contains the algorithm to reverse the `expArray` array
    arrayReverse(expArray, 0, (expArray.Length - 1));

    // display the reversed array
    Console.Write("\r\nThe elements of the reversed array: ");
    for (int repo = 0; repo < expArray.Length; repo++) {
      Console.Write(expArray[repo] + " ");
    }
  }

  // create a method to reverse an array
  public static void arrayReverse(int[] expArray, int startIndex, int endIndex) {
    while (startIndex < endIndex) {
      int objTemp = expArray[startIndex];
      expArray[startIndex] = expArray[endIndex];
      expArray[endIndex] = objTemp;
      startIndex++;
      endIndex--;
    }
  }
}

Producción :

The elements of the original array: 4 5 6 7 8

The elements of the reversed array: 8 7 6 5 4

Utilice el método Array.Reverse() para invertir una matriz en C#

Pertenece a la clase Array en el espacio de nombres System y es una forma eficiente de invertir una matriz en C#. Procesa la matriz unidimensional tomándola como argumento para invertir su formato de modo que pueda recibir una matriz invertida como salida.

En lugar de crear una nueva matriz, modifica la matriz original. Puede usar el método Enumerable.Reverse() si no está satisfecho con la modificación de la matriz original disponible en el espacio de nombres System.Linq.

Como método estático en el tipo de matriz, funciona sobrescribiendo los elementos o valores existentes de la matriz especificada sin ningún espacio o matriz auxiliar.

Lanza múltiples tipos de excepciones cuando una matriz es nula o multidimensional; el índice es menor que el límite inferior de la matriz, la longitud es menor que cero o el índice y la longitud no especifican un rango válido en la matriz. Después de una llamada a este método, los elementos en expArray[repo] (donde expArray representa una matriz y repo es un índice en la matriz) se mueven a expArray[i] donde i es igual a:

(myArray.Length + myArray.GetLowerBound(0)) - (i - myArray.GetLowerBound(0)) - 1

Este método es una operación O(n) donde n representa la longitud de una matriz. El tipo de valor del parámetro pasado a este método es System.Array, que representa la matriz unidimensional a invertir.

Código de ejemplo:

using System;

public class reverseArrayAlgo {
  public static void Main(string[] args) {
    // create an array containing five integer values
    int[] expArray = { 4, 5, 6, 7, 8 };

    // display the original array
    Console.Write("The elements of the original array: ");
    for (int rep = 0; rep < expArray.Length; rep++) {
      Console.Write(expArray[rep] + " ");
    }

    // call the `Array.Reverse()` method to reverse the `expArray` array by passing it through the
    // method's parameter
    Array.Reverse(expArray);

    // display the reversed array
    Console.Write("\r\nThe elements of the reversed array: ");
    for (int repo = 0; repo < expArray.Length; repo++) {
      Console.Write(expArray[repo] + " ");
    }
  }
}

Producción :

The elements of the original array: 4 5 6 7 8

The elements of the reversed array: 8 7 6 5 4

Utilice el método Enumerable.Reverse() para invertir una matriz en C#

Es una forma útil de invertir el orden de los elementos en una matriz sin modificar la matriz original o subyacente mediante la creación de una nueva secuencia de elementos en el orden inverso. Invoque el método Enumerable.Reverse() para invertir el orden de los elementos de una matriz, que es más conveniente y más fácil de leer que cualquier otro método o algoritmo inverso personalizado.

Pertenece al espacio de nombres System.Linq y devuelve una secuencia cuyos elementos corresponden a la secuencia de entrada en orden inverso. Su valor, que almacena toda la información necesaria para realizar la operación inversa, es un objeto de retorno inmediato implementado por ejecución diferida.

Puedes usar el método foreach o llamar directamente al método Getnumerator para enumerar el objeto para la perfecta ejecución de este método. A diferencia de OrderBy, Enumerable.Array() como método de clasificación no tiene en cuenta los valores reales al determinar el orden.

Código de ejemplo:

using System;
using System.Linq;

public class reverseArrayAlgo {
  public static void Main(string[] args) {
    // create an array containing five integer values
    int[] expArray = { 4, 5, 6, 7, 8 };

    // display the original array
    Console.Write("The elements of the original array: ");
    for (int rep = 0; rep < expArray.Length; rep++) {
      Console.Write(expArray[rep] + " ");
    }

    // call the `Enumerable.Reverse()` method to reverse the `expArray` array by passing it through
    // the method's parameter
    int[] reverse = Enumerable.Reverse(expArray).ToArray();

    // another alternative to display the reverse array
    // Console.WriteLine(String.Join(',', reverse));

    // display the reversed array
    Console.Write("\r\nThe elements of the reversed array: ");
    for (int repo = 0; repo < reverse.Length; repo++) {
      Console.Write(reverse[repo] + " ");
    }
  }
}

Producción :

The elements of the original array: 4 5 6 7 8

The elements of the reversed array: 8 7 6 5 4

Conclusión

Este tutorial analizó tres formas de invertir una matriz en C#. Este tutorial contiene ejemplos simplificados y optimizados del código C# ejecutable para una comprensión profunda.

Cada método inverso tiene sus propiedades y ventajas únicas sobre el otro. Elige el que mejor se adapte a tus necesidades.

Syed Hassan Sabeeh Kazmi avatar Syed Hassan Sabeeh Kazmi avatar

Hassan is a Software Engineer with a well-developed set of programming skills. He uses his knowledge and writing capabilities to produce interesting-to-read technical articles.

GitHub

Artículo relacionado - Csharp Array