Hice un algoritmo en C para ordenar enteros bastante corto. Es un poco difícil de entender para quienes no están acostumbrados al lenguaje puesto que usa solamente punteros y no índices de vectors. Es más, ni siquiera necesita como parametro el vector en sí sino solamente punteros a izquierda y derecha. --Mkucharuk (discusión) 16:42 25 jun 2008 (UTC)Responder


Para mi esta mal explicado en las tecnicas de reposicionamiento, no dice nada de que hacer cuando lista[i] y lista[j] son ambos menores o mayores que pivote.


Veo algo largo el ejemplo de ejecución del algoritmo. Además, me gustaría incluir también otra técnica para mover los elementos a ambos lados del pivote, pero si la pongo, tendría que incluir también un ejemplo de ejecución con ese nuevo sistema. A ver qué hacemos. DrJones 23:43 29 may, 2005 (CEST)


Considero que hoy en dia el uso de la funcion swap está ampliamente extendida. Swap intercambia dos valores del mismo tipo en cualquier estructura de datos. Así, quizás sería mucho mas entendedor poner:

swap(lista[i],lista[j])

En vez de:

temp = lista[i]; lista[i] = lista[j]; lista[j] = temp;

--DarkEndymion 11:16 28 dic 2006 (CET)

Error en el algoritmo

editar

while (lista[++i] < pivote); while (lista[--j] > pivote); if (lista[i] > lista[j])

Al empezar así la clasificación de las sublistas se obvian en la comparación el primer elemento del vector (inf) y el elemento en posicion sup-1. Si se pone "while (lista[i++]..." se cogerían todos los índices pero en el if se compararian los elementos posteriores. Ademas del problema de que si el pivote es el menor j llega a apuntar fuera del vector, si el pivote es el mayor i llegaría a apuntar al pivote, intercambiándolo en una posición incorrecta y después apuntaría fuera del vector. 88.7.102.128 (discusión) 15:33 8 abr 2008 (UTC)Responder

El algoritmo para C++ tambien esta mal, ver que no tiene en cuenta el caso en que existan elementos iguales al Pivote. visual basic no sirve pa na

Algoritmo en C más comprensible

editar

Hola buenas. Tengo un algoritmo en C escrito por mi que es más comprensible, (lógicamente, más extenso), y con un main que genera aleatoriamente 300 elementos para ver el funcionamiento. Sería posible su adición al artículo? Un saludo.--Alejandro Paredero. (discusión) 22:28 17 may 2009 (UTC)Responder

SE DEBE ACLARAR QUE LA DESCRIPCION DEL ALGORITMO ES PARA LISTAS QUE NO TIENEN ELEMENTOS DUPLICADOS, PORQUE NO FUNCIONA CUANDO HAY ELEMENTOS QUE SON IGUALES AL PIVOTE.

Acabo de insertar un algoritmo de Quicksort en C más comprensible y efectivo. El anterior no funcionaba correctamente. --Alejandro Paredero. (discusión) 00:02 10 ago 2009 (UTC)Responder

La implementación en C++ con doble puntero no es correcta

editar

Si los dos extremos del vector son iguales al pivote se produce un bucle infinito. Es fácilmente comprobable introduciendo un vector de dos componentes con igual valor. Además en ella no se emplea ninguna característica de C++, es una implementación en C. --Juen (discusión) 06:36 31 ene 2010 (UTC)Responder

Modificada la mal llamada implementación en C++ a una implementación en C de un solo puntero. --Juen (discusión) 06:47 31 ene 2010 (UTC)Responder

Volver a la página «Quicksort».