[C con Clase] Ordena burbuja mejorado, en listas

chulo chulorey en gmail.com
Lun Nov 20 00:37:50 CET 2006


Hola. Tengo una función de ordena burbuja simple, en listas. Intercambia el
valor de los datos de los nodos, no los nodos de lugar.
Quería hacer la misma función mejorada (las mejoras que quiero están en el
curso http://www.conclase.net/c/orden/burbuja.html en el punto 4).
Mi código es el siguiente:
void ordenarLista(pNodo *lista)
{
  int *menor, *mayor;
  int tmp;
  pNodo auxBucleInterno = *lista;
  pNodo auxBucleExterno = *lista;
  while(auxBucleExterno->siguiente)
    {
      while(auxBucleInterno->siguiente)
    {
      menor = &auxBucleInterno->dato;
      mayor = &auxBucleInterno->siguiente->dato;
      if (*mayor < *menor)
        {
          tmp = *mayor;
          *mayor = *menor;
          *menor = tmp;
        }
      auxBucleInterno  = auxBucleInterno->siguiente;
    }
      auxBucleInterno = *lista;
      auxBucleExterno  = auxBucleExterno->siguiente;
    }
}

La notificación de que no hubo intercambios la incorporé. Mi problema es ir
reduciendo la cantidad de iteraciones en el bucle interno.
¿ Alguna ayuda ?
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20061119/c872ceeb/attachment.html>


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