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. <br>Quería hacer la misma función mejorada (las mejoras que quiero están en el curso <a href="http://www.conclase.net/c/orden/burbuja.html">
http://www.conclase.net/c/orden/burbuja.html</a> en el punto 4).<br>Mi código es el siguiente:<br>void ordenarLista(pNodo *lista)<br>{<br>  int *menor, *mayor;<br>  int tmp;<br>  pNodo auxBucleInterno = *lista;<br>  pNodo auxBucleExterno = *lista;
<br>  while(auxBucleExterno->siguiente)<br>    {<br>      while(auxBucleInterno->siguiente)<br>    {<br>      menor = &auxBucleInterno->dato;<br>      mayor = &auxBucleInterno->siguiente->dato;<br>      if (*mayor < *menor)
<br>        {<br>          tmp = *mayor;<br>          *mayor = *menor;<br>          *menor = tmp;<br>        }<br>      auxBucleInterno  = auxBucleInterno->siguiente;<br>    }<br>      auxBucleInterno = *lista;<br>      auxBucleExterno  = auxBucleExterno->siguiente;
<br>    }<br>}<br><br>La notificación de que no hubo intercambios la incorporé. Mi problema es ir reduciendo la cantidad de iteraciones en el bucle interno.<br>¿ Alguna ayuda ?<br>