Burbuja net

288 views

Published on

Metodo de la burbuja

Published in: Technology
  • Be the first to like this

Burbuja net

  1. 1. MARTES, 13 DE OCTUBRE DE 2009Metodo de la BurbujaCuando estamos trabajando con mucha información, es imposible encontrar loque ando buscando si no está ordenado. Imagínate tu directorio telefónico si noestuviera ordenado alfabéticamente probablemente jamás lo usarías. Estosucede con los sistemas informáticos también: no basta guardar todos los datos,hace falta mantenerlos en orden o poder ordenarlos.Ahorita voy a explicar una manera de ordenar datos. Es el algoritmo menoseficiente, pero el más fácil de entender. Este algoritmo es el de Burbuja (obubblesort) y lo voy a ilustrar usando arreglos. Una vez que entiendas comofunciona con arreglos, no tendrás problemas en implementarlo con diferentestipos de estructuras, clases, registros, etc. Voy a hacer el código usando VisualBasic 6.0 (que va a ser igual que el 2005) y en C. Con esto creo que no tienenproblema en transportar el código a cualquier lenguaje de programación.El algoritmo funciona de la siguiente manera: primero compara el primerelemento contra los demás (obviamente se va comparando uno por uno,elemento por elemento). Si se encuentra un elemento menor, intercambia elcontenido (es decir, asigna a este elemento el valor menor y el valor que tenía lodeja en el elemento donde estaba el valor más pequeño). Una vez terminado decomparar el primer elemento contra todos los demás (se supone que el elementomenor está en la primera posición), hago lo mismo con el siguiente elemento: locomparo con todos los que siguen y dejo el menor valor (de los que quedan) , yasí sucesivamente voy comparando todos los elementos contra todos. Al final deldía, debería tener un arreglo ordenado.Por si te hice bolas, sé que una imagen vale mil palabras y como no piensoescribir mil palabras, mejor hice unos dibujitos para aclarar la situación. Esperoque se entienda. Después de la imagen, hacemos el algoritmo en C y Visual Basic.Ahí va la manera en que ordeno el primer elemento...
  2. 2. Ok. Allí está el primer elemento. Ahora voy con el segundo elemento...Ahora voy con el tercero...
  3. 3. Así me voy ordenando todos, pero para completar el ejercicio, ahí va la maneraen que se ordena el cuarto elemento:Y el quinto...
  4. 4. Y el sexto...El séptimo y octavo...
  5. 5. Ya no tiene comparar el octavo con el noveno porque se supone que si todos losnúmero están ordenados hasta el octavo elemento, el último debe ser el mayor atodos. El arreglo final, ordenadito y toda la cosa, es así:¡Listo! Queda un arreglo ordenadito y toda la cosa. Este algoritmo es muysencillo de entender, sin embargo, es muy ineficiente. La eficiencia de unalgoritmo tiene que ver directamente con el número de comparaciones que tieneque hacer y este algoritmo es muy ineficiente porque hace muchísimas.Ahora, ya entendido el concepto y la manera en que funciona este algoritmo,vamos a mostrar cómo se vería ya en código. Como el lenguaje C es muy simple,primero lo voy a resolver en este lenguaje. Aquí pongo el código y abajo de estaimagen explico que onda.
  6. 6. Le puse comentarios al código con la esperanza que se entienda mejor. De estecódigo, lo interesante, lo que hace el trabajo, son los dos ciclos anidados. Elciclo de "i" se encarga de dejarnos visitar todos los elementos del arreglo y elciclo "j" nos permite comparar todos los elementos que son mayores de i (o sea,los que faltan por comparar). Si el elemento en la posición j es menor al queestá en la posición i, los intercambio (para esto uso una variable k que auxilia enla cambiadera).Simplemente como comentario cultural, el código en C lo hice usando elcompilador Microsoft Visual C++ 6.0, pero como usé el C estándar (ANSI C)debería funcionar con cualquier compilador (bueno, algunos comentarios estánen "formato" C++, los que comienzan con dos diagonales invertidas, pero no creoque tengas broncas).Al ejecutarlo se ve así:Transportar esta idea a Visual Basic 6.0 es sencillo (y es aún más fácil usar elcódigo de Visual Basic 6 en el 2005). Hice una pequeña aplicación, sencillita, quetiene 10 cajas de texto y dos botones. Un botón ordena los valores de las cajasde texto y el otro finaliza la ejecución del programa. El interfaz se ve así:
  7. 7. El código del programa es ésta:En éste código, txtNumero es un arreglo de los TextBoxes que están en lapantalla. ¿Algún problema? Recuerda que si te quedaste con dudas, me puedesdejar un comentario e intentaré responderte en cuanto pueda.Ahora voy a hacer esta misma aplicación en Visual Basic 2005. Es casi igual que
  8. 8. en la versión 6, pero de todos modos les muestro la interfaz y luego el código. Elgran problema que me trauma de la versión 2005 es que no es posible tenerarreglos de controles. Bueno, sí se puede pero es un gran relajo al que prefierono entrarle. Para saltarme esta bronca, antes de ordenar, copio los valores de lascajas de texto (txtNumero1 a txtNumero10) a un arreglo.Y aquí les dejo el código de la ventana es ésta:

×