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>