Varios algoritmos de clasificación comunes y sus ventajas y desventajas

Los algoritmos de clasificación comunes son:

  1. Clasificación de burbujas: recorre repetidamente la secuencia que se va a clasificar, compara los tamaños de los elementos adyacentes e intercámbialos hasta que se complete la clasificación de la secuencia. La complejidad del tiempo es O (n ^ 2), que es un algoritmo de clasificación estable.

  2. Clasificación de selección: cada recorrido encuentra el elemento más pequeño y lo coloca al final de la secuencia ordenada. La complejidad del tiempo es O (n ^ 2), que no es un algoritmo de clasificación estable.

  3. Clasificación por inserción (clasificación por inserción): recorre la secuencia que se va a clasificar e inserta el elemento actual en la posición adecuada en la secuencia clasificada. La complejidad del tiempo es O (n ^ 2), que es un algoritmo de clasificación estable.

  4. Shell Sort: una versión mejorada de la clasificación por inserción, que divide la secuencia en varias subsecuencias para la clasificación por inserción y finalmente realiza otra clasificación por inserción. La complejidad del tiempo es O (n log n) a O (n ^ 2), que no es un algoritmo de clasificación estable.

  5. Combinar ordenación: divida la secuencia en varias subsecuencias y ordénelas de forma recursiva, y luego combine las subsecuencias ordenadas en la secuencia ordenada final. La complejidad del tiempo es O(n log n), que es un algoritmo de clasificación estable.

  6. Clasificación rápida: seleccione un elemento de referencia, coloque los elementos más pequeños que el elemento de referencia a la izquierda, coloque los elementos más grandes que el elemento de referencia a la derecha y luego ordene recursivamente las partes izquierda y derecha. La complejidad del tiempo es O (n log n), que no es un algoritmo de clasificación estable.

  7. Heap Sort: crea la secuencia que se ordenará en un montón de raíz grande o en un montón de raíz pequeño, intercambia el elemento superior con el último elemento cada vez y luego reconstruye el montón. La complejidad del tiempo es O (n log n), que no es un algoritmo de clasificación estable.

Las ventajas y desventajas son las siguientes

nombre del algoritmo ventaja defecto
Ordenamiento de burbuja 1. Implementación simple, fácil de entender y codificar 2. La clasificación de burbujas es una buena opción para clasificar pequeños conjuntos de datos 1. Alta complejidad temporal, O(n^2). 2. La eficiencia de clasificar una gran cantidad de datos es baja 3. Cuando la matriz está completamente ordenada, aún debe clasificarse por completo.
clasificación de selección 1. La idea del algoritmo es simple y fácil de implementar 2. No ocupa espacio de memoria adicional 1. Alta complejidad temporal, O(n^2). 2. El tiempo de ejecución no tiene nada que ver con el estado inicial de los datos de entrada, es decir, independientemente de que los datos estén ordenados o desordenados, se requiere el mismo número de operaciones de comparación y movimiento 3. Entre todos los N^2, el número de intercambios es el mínimo, por lo que la clasificación por selección tiene una ligera ventaja sobre la clasificación por burbujas en términos de movimiento de datos. Pero cuando el movimiento de datos requiere mucho tiempo, se deben considerar otros algoritmos.
tipo de inserción 1. Implementación simple, fácil de entender y codificar 2. Para la clasificación de datos a pequeña escala, la clasificación por inserción es más eficiente 3. Para la clasificación de matriz parcialmente ordenada, la eficiencia es mayor 1. Para clasificar matrices desordenadas a gran escala, la eficiencia de la clasificación por inserción es baja y la complejidad del tiempo es O (n ^ 2). 2. La clasificación por inserción es una clasificación estable, pero cada intercambio requiere operaciones de asignación 3. En comparación con la clasificación por selección, el número de intercambios es mayor, por lo que la eficiencia es menor que la clasificación por selección.
clasificación de colinas 1. Un algoritmo mejorado basado en ordenación por inserción, que puede ordenar rápidamente secuencias básicamente ordenadas 2. Es un algoritmo de ordenación en el lugar que no requiere espacio de almacenamiento adicional 3. El límite superior de la complejidad del tiempo es O( n^ 2), pero el tiempo de ejecución real es más corto. 1. La complejidad del tiempo depende de la selección de la secuencia incremental, y la selección de la secuencia incremental no es muy fácil. 2. Es un algoritmo de clasificación inestable, lo que no garantiza que el orden relativo de elementos iguales permanezca sin cambios.
ordenar por fusión 1. Es un algoritmo de clasificación estable, que garantiza que el orden relativo de elementos iguales permanezca sin cambios 2. La complejidad temporal es estable, O(nlogn) 3. Es adecuado para clasificar una gran cantidad de datos 1. Se requiere espacio de almacenamiento adicional para almacenar arreglos temporales. 2. Se requieren llamadas recursivas, que consumen una cierta cantidad de espacio de pila del sistema 3. Cuando la matriz está completamente ordenada, aún debe clasificarse por completo.
ordenación rápida 1. La complejidad del espacio es baja y solo se necesita una pila para realizar el proceso recursivo 2. La complejidad del tiempo es mejor, O(nlogn) en el mejor de los casos, O(nlogn) en el caso promedio y O(nlogn ) en el peor de los casos n^2); 3. El efecto de clasificación es mejor para datos distribuidos aleatoriamente, pero el efecto de clasificación para datos con una gran cantidad de elementos idénticos es pobre. 1. Inestable, porque la posición de los elementos cambiará durante el proceso de clasificación. 2. En el peor de los casos, la complejidad del tiempo es O(n^2). Cuando los datos han sido clasificados, la eficiencia de la clasificación rápida se reducirá en gran medida. 3. El efecto de clasificación es mejor para los datos distribuidos aleatoriamente, pero para un gran número de datos idénticos la ordenación de los elementos es menos eficaz.
ordenar en montón 1. Estable, porque la posición de los elementos no cambiará durante el proceso de clasificación 2. La complejidad temporal es estable, y la complejidad temporal en el mejor, promedio y peor de los casos es O(nlogn) 3. Para distribución aleatoria Y una gran cantidad de datos con los mismos elementos tienen un mejor efecto de clasificación 1. La complejidad del espacio es alta y se debe establecer un árbol binario completo para almacenar datos, por lo que debe ocupar una gran cantidad de espacio de memoria. 2. No es adecuado para clasificar datos a gran escala, porque en el caso de una gran cantidad de datos, la clasificación en montón requiere múltiples intercambios de datos y la eficiencia es baja.

Supongo que te gusta

Origin blog.csdn.net/qq_42133976/article/details/130417604
Recomendado
Clasificación