Al leer sobre varios algoritmos de ordenación, he visto que mencionan que algunos son "estables" y otros no. ¿Qué significa eso y qué compensaciones están involucradas sobre esa base al seleccionar un algoritmo?
Al leer sobre varios algoritmos de ordenación, he visto que mencionan que algunos son "estables" y otros no. ¿Qué significa eso y qué compensaciones están involucradas sobre esa base al seleccionar un algoritmo?
Respuestas:
Una ordenación estable es aquella que conserva el orden original del conjunto de entrada, donde el algoritmo de comparación no distingue entre dos o más elementos.
Considere un algoritmo de clasificación que clasifique las tarjetas por rango , pero no por palo. El tipo estable garantizará que se mantenga el orden original de las tarjetas que tengan el mismo rango; el tipo inestable no lo hará.
Los algoritmos estables preservan el orden relativo de los elementos.
Por lo tanto, un algoritmo de ordenación estable retendrá el orden relativo de valores que se comparan como iguales.
Considere un algoritmo de clasificación en el que clasificamos una colección de puntos 2D según su dimensión X.
Colección a ordenar: {(6, 3), (5, 5), (6, 1), (1, 3)}
Estable ordenado: {(1, 3), (5, 5), (6, 3), (6, 1)}
Ordenado regularmente: ya sea {(1, 3), (5, 5), (6, 3), (6, 1)}
o{(1, 3), (5, 5), (6, 1), (6, 3)}
En cuanto a la compensación ... bueno, la clasificación estable es menos eficiente, pero a veces la necesitas.
Por ejemplo, cuando un usuario hace clic en el encabezado de una columna para ordenar valores en una interfaz de usuario, es razonable esperar que su orden de clasificación anterior se use en el caso de valores iguales.