¡Decir ah! Le he preguntado a mis alumnos “¿Cuál es el mejor algoritmo de clasificación?” Muchas veces. Si responden con un algoritmo específico, entonces están equivocados, porque la única respuesta correcta es “depende”.
Sí, QuickSort es ideal para la clasificación generalizada, si …
1) no te preocupes por los conjuntos de entrada en el peor de los casos (es decir, el orden es generalmente aleatorio),
2) lo necesita para operar en el lugar (y todo el conjunto de datos cabe en la memoria),
3) no es necesario que se adapte a entradas ya clasificadas o en su mayoría, y
4) no es necesario que sea estable (para usar en clasificaciones progresivas de múltiples claves).
Si la mayoría de los datos están ordenados, entonces Insertion o Shell pueden ser excelentes.
Si realmente debe eliminar la posibilidad del peor de los casos, puede usar Heap (o al menos Quick3) que son NlogN y en el lugar. En promedio , Quick es más rápido que ambos, pero mejoran radicalmente cualquier garantía que puedas ofrecer.
- ¿Cuáles son las mejores marcas de cigarrillos electrónicos?
- ¿Cuáles son las mejores aplicaciones de noticias?
- ¿Cuáles son los mejores productos para vender en línea?
- ¿Cuál es la mejor manera de ganar dinero a una edad temprana?
- ¿Cuáles son los mejores programas y películas para ver en Amazon Prime?
Fusionar es un gran tipo de NlogN estable sin el ” rendimiento potencialmente patológico ” de Quick (pero es un problema de memoria). También es la única opción razonable si el conjunto de datos es demasiado grande para caber en la memoria.
Y, por supuesto, la mejor pregunta de trivia de todas: si, por alguna razón, las Escrituras son increíblemente caras en relación con las Lecturas, es posible que desee la Selección (o, mejor aún, el Ciclo).
Para matrices cortas, también hay menos sobrecarga inicial con la inserción.
Así que sí, depende . (-: