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]);
}
}
}
}