Metodo de la burbuja en algoritmo

15
Definición: La Ordenación de burbuja (Bubble Sort en inglés) es un sencillo algoritmo de ordenamiento. Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado. Es necesario revisar varias veces toda la lista hasta que no se necesiten más intercambios, lo cual significa que la lista está ordenada. Este algoritmo obtiene su nombre de la forma con la que suben por la lista los elementos durante los intercambios, como si fueran pequeñas “burbujas”. También es conocido como el método del intercambio directo. Dado que solo usa comparaciones para operar elementos, se lo considera un algoritmo de comparación, siendo el más sencillo de implementar. Ejemplo C#: Programa con una Estructura del Metodo de Burbuja Simple que ordene 150 numeros, el cual primero mostrara desordenados y despues de dar enter ordenar using System; using System.Collections.Generic; using System.Text; namespace Metodo_Ordenamiento_Burbuja_Simple { class Program { static void Main(string[] args) { int[] Numeros = new int[150];

Transcript of Metodo de la burbuja en algoritmo

Page 1: Metodo de la burbuja en algoritmo

Definición:

La Ordenación de burbuja (Bubble Sort en inglés) es un sencillo algoritmo de

ordenamiento. Funciona revisando cada elemento de la lista que va a ser ordenada con el

siguiente, intercambiándolos de posición si están en el orden equivocado. Es necesario

revisar varias veces toda la lista hasta que no se necesiten más intercambios, lo cual

significa que la lista está ordenada. Este algoritmo obtiene su nombre de la forma con la

que suben por la lista los elementos durante los intercambios, como si fueran pequeñas

“burbujas”. También es conocido como el método del intercambio directo. Dado que solo

usa comparaciones para operar elementos, se lo considera un algoritmo de comparación,

siendo el más sencillo de implementar.

Ejemplo C#:

Programa con una Estructura del Metodo de Burbuja Simple que ordene 150 numeros, el

cual primero mostrara desordenados y despues de dar enter ordenar

using System;

using System.Collections.Generic;

using System.Text;

namespace Metodo_Ordenamiento_Burbuja_Simple

{

class Program

{

static void Main(string[] args)

{

int[] Numeros = new int[150];

Page 2: Metodo de la burbuja en algoritmo

int X = 150, Aux;

Random Num = new Random();

Console.WriteLine("Los Numeros Antes de Ordenar: ");

for (int Y = 0; Y < X; Y++)

{

Numeros[Y] = Num.Next(0, 500);

Console.WriteLine(Numeros[Y]);

}

Console.WriteLine("\n\n\n\t\t Presione Enter para Ordenar los

numeros");

Console.ReadLine();

Console.Clear();

for (int I = 0; I < X; I++)

{

for (int J = I + 1; J < X; J++)

{

if (Numeros[I] > Numeros[J])

{

Aux = Numeros[I];

Numeros[I] = Numeros[J];

Numeros[J] = Aux;

}

}

}

Console.WriteLine("Los Numeros Ordenados son");

for (int Y = 0; Y < X; Y++)

{

Console.WriteLine("{0}", Numeros[Y]);

}

Console.ReadLine();

}

}

}

¿Metodo de Burbuja C#? Necesito acomodar este metodo para que se despliegue desde la Z hasta la A, pero no he podido

les agradeceria mucho si me pudieran explicar como debe ser el codigo..

Este metodo se despliega de la A a la Z y yo lo necesito al reves Z a la A

string[] aPalabras = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "M", "N", "O", "P", "Q", "R",

"S", "T", "U", "V", "X", "Y", "Z" }; //Arreglo que contiene Letras

int i, j = 0; //contadores

Page 3: Metodo de la burbuja en algoritmo

string aux = "";

Console.WriteLine("Listado inicial \t\");

for(i = 0; i < aPalabras.Length; i++)

{

Console.WriteLine(i + " : " + aPalabras[i]);

}

for(i=0;i<aPalabras.Length-1;i++)

{

for(j=0;j<aPalabras.Length-i-1;j++…

{

if (aPalabras[j+1].CompareTo(aPalabras[j]) <= 0)

{

aux=aPalabras[j+1];

aPalabras[j+1]=aPalabras[j];

aPalabras[j]=aux; /

}

}

}

Console.WriteLine("Listado final (ordenado) \t");

for(i = 0; i < aPalabras.Length; i++)

{

Console.WriteLine(i + " : " + aPalabras[i]);

}

hace 3 años Reportar abusos

ale.NET

Mejor respuesta - elegida por quien preguntó

/*

Aqui esta tu código en C#

Espero te sirva, saludos ;)

*/

Page 4: Metodo de la burbuja en algoritmo

using System;

class Program

{

static void Main()

{

string[] aPalabras = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "M", "N", "O", "P", "Q",

"R", "S", "T", "U", "V", "X", "Y", "Z" }; //Arreglo que contiene Letras

Console.WriteLine("Listado inicial:");

foreach (string c in aPalabras)

Console.Write(c + " ");

//Metodo Burbuja

string temp = "";

for (int i = aPalabras.Length - 1; i >= 0; i--)

for (int j = 1; j <= i; j++)

if (aPalabras[j - 1].CompareTo(aPalabras[j]) <= 0)

{

temp = aPalabras[j - 1];

aPalabras[j - 1] = aPalabras[j];

aPalabras[j] = temp;

}

Console.WriteLine("\nListado final:");

foreach (string c in aPalabras)

Console.Write(c + " ");

Console.ReadKey();

}

}

Page 5: Metodo de la burbuja en algoritmo

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.

Page 6: Metodo de la burbuja en algoritmo

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

Page 8: Metodo de la burbuja en algoritmo

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();

Page 9: Metodo de la burbuja en algoritmo

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()

{

Page 10: Metodo de la burbuja en algoritmo

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();

}

}

}

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

Page 11: Metodo de la burbuja en algoritmo

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

Page 12: Metodo de la burbuja en algoritmo

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

Page 13: Metodo de la burbuja en algoritmo

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;

Page 14: Metodo de la burbuja en algoritmo

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()

Page 15: Metodo de la burbuja en algoritmo

{

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();

}

}

}