Programa en C# para invertir un arreglo

En este post veremos un ejemplo para invertir un arreglo en C# usando métodos que el lenguaje provee.

Invertir arreglo en C#

Función Reverse en C#

Para invertir un arreglo simplemente llamamos al método Reverse de Array en C#, así como en el siguiente ejemplo:

using System;
/*
  Invertir un arreglo en C#
  Demostración con arreglo de cadenas pero también funciona
  para otros tipos de arreglos

  @author parzibyte
  Visita: parzibyte.me/blog
*/class MainClass {
  public static void Main (string[] args) {
    string[] lenguajes = {"C#", "C", "C++","Go","Java","PHP","JavaScript", "Python"};
    Console.WriteLine("========\nImprimiendo arreglo antes de invertir\n========");
    foreach(string lenguaje in lenguajes){
      Console.WriteLine(lenguaje);
    }
    // La siguiente línea invierte el arreglo:
    Array.Reverse(lenguajes);
    Console.WriteLine("========\nImprimiendo arreglo DESPUÉS de invertir\n========");
    foreach(string lenguaje in lenguajes){
      Console.WriteLine(lenguaje);
    }
  }
}

Recuerda indicar al inicio Using System; y si no lo haces, llama a Reverse usando System.Array.Reverse.

Usando método manual

Invertir arreglo con C sharp

Puede que quieras conocer el algoritmo para invertir el arreglo de manera manual o con métodos propios. Podemos hacer esto con un simple ciclo for que va desde el índice 0 hasta el índice central del arreglo.

En cada paso del ciclo intercambiamos el valor actual por el del extremo opuesto o extremo derecho. El código queda así:


using System;
// https://parzibyte.me/blog

namespace App
{
    class Programa
    {

        static void Main(string[] args)
        {
            int[] arreglo = { 50, 20, 90, 10, 9 };
            Console.WriteLine("Antes de invertir: ");
            foreach (var elemento in arreglo)
            {
                Console.WriteLine(elemento);
            }
            for (int indiceDelExtremoIzquierdo = 0; indiceDelExtremoIzquierdo < arreglo.Length / 2; indiceDelExtremoIzquierdo++)
            {
                int indiceDelExtremoDerecho = arreglo.Length - indiceDelExtremoIzquierdo - 1;
                int temporal = arreglo[indiceDelExtremoDerecho];
                arreglo[indiceDelExtremoDerecho] = arreglo[indiceDelExtremoIzquierdo];
                arreglo[indiceDelExtremoIzquierdo] = temporal;
            }

            Console.WriteLine("Después de invertir: ");
            foreach (var elemento in arreglo)
            {
                Console.WriteLine(elemento);
            }
        }
    }
}

Lo importante está desde la línea 18 hasta la línea 24. Hacemos el ciclo for empezando en 0 y vamos a ir hasta antes de Longitud del arreglo entre 2.

Estamos dividiendo de manera entera, por lo que el número será redondeado hacia abajo. Por ejemplo, si la longitud es 5, el número será 2, y el ciclo irá hasta 1. Si la longitud es 6, el número será 3 y el ciclo irá hasta 2.

Luego calculamos el índice del extremo derecho que en este caso está dado por la longitud del arreglo menos el índice del izquierdo menos 1. Almacenamos ese valor en un temporal y hacemos el intercambio.

La salida ya la has visto en la imagen del encabezado.

Si te gusta C# te invito a leer más posts sobre el lenguaje por aquí.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

    • Sí, solo que recuerde que los índices siempre serán de tipo int ya que esos no cambian independientemente del tipo de dato

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

5 días hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

2 semanas hace

Esta web usa cookies.