[C con Clase] Ordena burbuja mejorado, en listas

Salvador Pozo salvador en conclase.net
Mar Nov 21 21:16:29 CET 2006


El pasado 2006-11-20 07:37:50, chulo escribió:
 
c> Hola. Tengo una función de ordena burbuja simple, en listas. Intercambia el
c> valor de los datos de los nodos, no los nodos de lugar.
c> Quería hacer la misma función mejorada (las mejoras que quiero están en el
c> curso http://www.conclase.net/c/orden/burbuja.html en el punto 4).

Hola:

Al tratarse de una lista no es posible implementar el algoritmo de la burbuja de la misma forma que se explica en la página, ya que al no haber índices, no es posible que el límite superior del bucle interior sea una unidad menor cada vez.

En su lugar, si quieres implementar esta optimización, puedes optar por la otra opción que se menciona en el artículo: guardar la posición del último intercambio.

En este caso será un puntero. Cada vez que se haga un intercambio podemos almacenar el valor del puntero intercambiado.

De todos modos, antes de optimizar tu algoritmo, revísalo, ya que me parece que no has implementado el método de la burbuja. Ten en cuenta que intercambias punteros a elementos de la lista, pero en realidad, no estás cambiando el orden de la lista en ningún momento.

No es un mal ejercicio, aunque el de la burbuja no es el sistema ideal para ordenar listas enlazadas. Sin embargo, ya que te has puesto con ello, creo que puedes aprender mucho sobre punteros si lo resuelves.

Yo que tu volvería a empezar, haz simulaciones de tu código sobre el papel, y verás que no funciona como crees.

Hasta pronto.
-- 
Salvador Pozo
mailto:salvapozo en conclase.net


Más información sobre la lista de distribución Cconclase