--
Para enviar mensajes al grupo: sp...@googlegroups.com
Para retirarse del grupo: spc-l-un...@googlegroups.com
Para mas opciones: http://groups.google.com/group/spc-l?hl=es
saludos
2011/10/10 Dany Joel Ucañay Barreto <dad...@hotmail.com>:
> --
> Para enviar mensajes al grupo: sp...@googlegroups.com
> Para retirarse del grupo: spc-l-un...@googlegroups.com
> Para mas opciones: http://groups.google.com/group/spc-l?hl=es
--
Alfredo Paz-Valderrama
Sociedad Peruana de Computación
gracias por la ayuda pero creo que ese es una funcion para un array y no para una lista enlazada.
El link enviado por Cesar ALLAIN es correcto. Quicksort no requiere que la estructura sea de acceso aleatorio si el pivote se toma del inicio o el final, y como el algoritmo recorre iterativamente desde el inicio y desde el final para colocar el pivote en su ubicación correcta lo único necesario es que se trate de una lista doblemente enlazada. El número de comparaciones es aproximadamente N log N.
Saludos.
En el siguiente link http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/video-lectures/ podrás ver un index sobre varios Video Lectures al libro de cabecera de análisis de algoritmos que hacer referencia Manuel. Dado que tu inquietud es sobre el algoritmo de ordenamiento Quicksort, lo recomendable es que mires el video Lecture 4: Quicksort, Randomized Algorithms. También en este otro enlace http://books.google.com/books?id=NLngYyWFl_YC&printsec=frontcover&source=gbs_ge_summary_r&cad=0#v=onepage&q&f=false está on-line el capítulo siete del mismo libro y podrás leer más al respecto.
Existen otros algoritmos de ordenamiento como: Merge sort, head sort, buble sort, etc. El elegir uno y no el otro dependerá del problema a resolver.
"Even if pivots aren't chosen randomly, quicksort still requires only O(n log n) time averaged over all possible permutations of its input. Because this average is simply the sum of the times over all permutations of the input divided by n factorial, it's equivalent to choosing a random permutation of the input. When we do this, the pivot choices are essentially random, leading to an algorithm with the same running time as randomized quicksort."
Por supuesto, aún cuando el costo promedio de ambos es N log N merge sort se desempeña significativamente mejor que quicksort en listas.
"Merge sort is more efficient than quick sort for some types of lists if the data to be sorted can only be efficiently accessed sequentially, and is thus popular in languages such as Lisp, where sequentially accessed data structures are very common. Unlike some (efficient) implementations of quicksort, merge sort is a stable sort as long as the merge operation is implemented properly."