Ordenamiento de Burbuja Definición.

El ordenamiento de burbuja (Bubble Sort), tambien conocido como “método del intercambio directo” es un algoritmo que obtiene su nombre de la forma con la que suben los elemento de una lista, como si fueran “burbujas”. Funciona comparando elementos de dos en dos en un ciclo, intecambiandolos según sea el caso. Es necesario revisar varias veces toda la lista has que no se necesiten más intercambios.

Algoritmo (Ordenamiento de Burbuja)

i=0,j=0,N=4
ListaNoOrdenada[5] {5,10,1,3,2}
Para i desde 0 hasta N
    Para j desde 0 hasta N
       Si No_Ordenados(ListaNoOrdenada[j] > ListaNoOrdenada[j + 1] entonces
             variable_temp = ListaNoOrdenada[j]
             ListaNoOrdenada[j] = ListaNoOrdenada[j + 1]
             ListaNoOrdenada[j + 1] = variable_temp
       FinSi
    Siguiente i
Fin

Ejemplo:

La idea de este programa es ordenar el arreglo numérico {5,10,1,3,2} de menor a mayor. El ordenamiento de burbuja lo que hace es seleccionar los primeros dos elementos, compararlos, y si el primero es mayor que el segundo, hace el intercambio, el mayor se va a una variable temporal, cediendo su lugar al número menor, y despues pasa a ocupar la posición que ocupaba el otro. El procedimiento se lleva a cabo en un ciclo hasta que verifica todos los números y estan correctamente ordenados.

Código

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace BubbleSort
{
    /// <summary>
    /// Description of MainForm.
    /// </summary>
    public partial class frmPrincipal
    {
        public int[] ListaNoOrdenada;
        public int N;
       
        [STAThread]
        public static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new frmPrincipal());
        }
       
        public frmPrincipal()
        {
            //
            // The InitializeComponent() call is required for Windows Forms designer support.
            //
            InitializeComponent();
           
            ListaNoOrdenada = new int[5] {5,10,1,3,2};
            N = 4;
           
           
            //
            // TODO: Add constructor code after the InitializeComponent() call.
            //
        }
       
       
       
        void CmdOrdenarClick(object sender, System.EventArgs e)
        {
            Burbuja(ListaNoOrdenada);
           
        }
       
        void FrmPrincipalLoad(object sender, System.EventArgs e)
        {
            //Despliega datos en ListBox
            for (int i=0; i <= N;i++)
            {
                lsNoOrd.Items.Add(ListaNoOrdenada[i]);
            }
           
        }
       
        // Procedimiento recibiendo parametros
        public void Burbuja(int[] LNO)
        {
            // Variables
            int i, j;
            int temp;
           
            // N Pasadas
            for (i = 0; i < N; i++)
            {
                for (j = 0; j < N; j++)
                {
                    // Comparando parejas de numeros
                    if (LNO[j] > LNO[j + 1])
                    {
                        // Asignando valores ordenados
                        temp = LNO[j];
                        LNO[j] = LNO[j + 1];
                        LNO[j + 1] = temp;
                    }
                }
            }
           
            // Despliega datos en ListBox
            for (int c=0; c <= N;c++)
            {
                lsOrd.Items.Add(LNO[c]);
            }
                            
           
        }
    }
}

:estructura_datos_csharp:burbuja.jpg

 


 


Driven by DokuWiki

Politica de Privacidad