Tengo problemas para encontrar buenos recursos que den el peor de los casos en su lugar estable algoritmo de clasificación . ¿Alguien sabe de algún buen recurso?
Solo un recordatorio, en su lugar significa que usa la matriz que se pasa y el algoritmo de clasificación solo puede usar espacio adicional constante. Estable significa que los elementos con la misma clave aparecen en el mismo orden en la matriz ordenada que en el original.
Por ejemplo, el tipo de fusión ingenuo es el peor de los casos y estable, pero usa espacio adicional O ( n ) . La clasificación rápida estándar puede estabilizarse, está en su lugar pero es el peor de los casos O ( n 2 ) . Heapsort está en su lugar, el peor de los casos O ( n ln n ) pero no es estable. Wikipedia tiene un buen cuadro de qué algoritmos de clasificación tienen qué inconvenientes. Observe que no hay un algoritmo de clasificación que enumeren que tenga las tres condiciones de estabilidad, el peor de los casos O ( n ln ) y estar en su lugar.
Encontré un artículo llamado " Combinación práctica en el lugar" por Katajainen, Pasanen y Teuhola, que afirma tener una variante de combinación estable en el peor de los casos . Si entiendo sus resultados correctamente, usan mergesort recursivamente en el primer 1 de la matriz y el último1 de la matriz y usar el segundo1 como espacio de cero para hacer la fusión. Todavía estoy leyendo esto, así que se agradece más información sobre si estoy interpretando sus resultados correctamente.
También estaría muy interesado en el peor de los casos en su lugar, quicksort estable. Por lo que entiendo, modificar el ordenamiento rápido para que sea el peor de los casos O ( n ln n ) requiere seleccionar un pivote adecuado que destruiría la estabilidad de la que normalmente disfrutaría.
Esto es puramente de interés teórico y no tengo ninguna aplicación práctica. Solo me gustaría conocer el algoritmo que tiene estas tres características.