¿Cuál es la diferencia entre un tipo estable e inestable?

Se dice que un algoritmo de clasificación es estable si dos objetos con claves iguales aparecen en el mismo orden en la salida ordenada que en la matriz sin clasificar de entrada.

mientras que se dice que un algoritmo de clasificación es inestable si sus dos o más objetos con claves iguales no aparecen en el mismo orden antes y después de la clasificación.

este es un ejemplo de ordenación estable aquí 26 aparece dos veces en las posiciones 6 y 8 y su orden se conserva en una ordenación ordenada y sin clasificar, es decir, el elemento 26 en la posición 6 aparece primero en una ordenación ordenada y sin clasificar (antes y después de la ordenación).

en caso de clasificación inestable, este orden de aparición antes y después de la clasificación no se conserva.

Algunos algoritmos de ordenación, como la ordenación por inserción, la ordenación por fusión, la ordenación por burbujas, etc., son estables por naturaleza, y algunos algoritmos de ordenación como la ordenación en montón, la ordenación rápida, etc., no son estables por naturaleza.

Otros ya han dado la definición: una ordenación estable garantiza que los registros con claves iguales (o más bien, elementos que se comparan como iguales según los criterios de ordenación) mantienen un orden relativo.

Para un ejemplo más simple, considere una lista de personas que luego se ordena por apellido. Con una clasificación estable, todos los Smiths estarán en el mismo orden (entre Smiths) antes y después, y todos los Johnsons estarán en el mismo orden antes y después, aunque después (pero no antes) tiene la garantía de tener todos los Johnsons antes de todos los Smiths.

Una propiedad posiblemente (?) Interesante de esto que es obvia por observación es que los tipos estables son compostables. Por ejemplo, si desea crear un directorio ordenado primero por apellido, luego por nombre, luego por inicial del segundo nombre, puede aplicarlos uno a la vez (en orden inverso): primero ordenar por inicial del segundo nombre, luego ordenar por primer nombre , luego ordenar por apellido. (¿Útil? Quién sabe, solo estoy haciendo una observación).

Clasificación estable frente a inestable: cualquier algoritmo de clasificación se considera estable si la posición relativa de los elementos equivalentes permanece igual antes y después de la clasificación. – Ver más en: Algoritmos de clasificación estables e inestables

Algoritmos de clasificación estables: –

  • Tipo de inserción
  • Ordenar fusión
  • Bubble Sort etc.

Algoritmos de clasificación inestables: –

  • Heap Sort
  • Tipo de selección
  • Tipo de concha
  • Clasificación rápida, etc.

La respuesta a la pregunta principal ya está dada y también se puede encontrar en Wikipedia.

Como soy A2A’ed, creo que alguien está buscando la respuesta a la parte “también” en la descripción.

Publicarlo como una pregunta separada podría ayudar, pero de todos modos aquí hay una respuesta corta: agregue un índice a los elementos de la matriz y luego asegúrese de que su función de comparación verifique ese índice en caso de empate. Por ejemplo, [8, 5, 4, 2, 6, 2, 4] se convertiría en [{8,1}, {5,2}, {4,3}, {2,4}, {6,5} , {2,6}, {4,7}].

Un algoritmo de ordenación estable es el que clasifica los elementos idénticos en el mismo orden en que aparecen en la entrada. considere la siguiente entrada: 2514 4 8 2 , los elementos 4 y 2 aparecen dos veces en la entrada “uno se muestra en negrita para distinguirlos”, el algoritmo estable mantendría su orden. Por lo tanto, producirá: 12 2 4 4 58. Sin embargo, el algoritmo de clasificación no estable puede generar: 1 2 24 4 58.

La ordenación de burbujas, la ordenación por fusión ‘en algunas versiones’ y la ordenación por inserción son todas estables. Sin embargo, la ordenación por selección y la ordenación rápida son ejemplos de algoritmos de ordenación no estables.

La ordenación estable es cuando la secuencia de elementos “iguales” antes de la ordenación permanece igual después de la ordenación. Por ejemplo, consideremos una lista de puntajes altos en algún juego, tiene puntajes y nombres de jugadores y desea ordenarlos en orden descendente. Si utiliza un algoritmo de clasificación inestable como clasificación rápida, los jugadores con exactamente los mismos puntajes cambiarán de posición en la lista tantas veces como los clasifique.
Cualquier algoritmo de ordenación inestable también puede estabilizarse si también tiene en cuenta el índice del elemento en la lista antes de ordenarlo y compara elementos iguales que lo usan.

Los algoritmos de clasificación estable mantienen el orden relativo de los registros con claves iguales. Tomemos una matriz de números A [8,3,1,4,5,3] hay dos tres en la matriz.
Así que escribamos (solo para entender) los tres en la posición A [5] = 3 * para que nuestra matriz sea ahora A [8,3,1,4,5,3 *]. Ahora cuando clasifiquemos la matriz A lo haremos tener A [1,3,3 *, 4,5] o A [1,3 *, 3,4,5] basado en el algoritmo que usamos. Si 3 viene antes que 3 *, el tipo es estable, es decir, relativo se mantiene el orden. Esto debe seguirse para cada elemento que ocurra más de una vez en una matriz.