Resumen y comparación de varios algoritmos de clasificación

1 Clasificación rápida (QuickSort) La clasificación rápida es un algoritmo recursivo a gran escala de clasificación en el lugar, divide y vencerás. Esencialmente, es una versión en el lugar de la ordenación por fusión. La ordenación rápida se puede componer de los siguientes cuatro pasos. (1) Si no hay más de 1 dato, devolverlo directamente. (2) Generalmente, el valor más a la izquierda de la secuencia se selecciona como los datos de punto de apoyo. (3) Divida la secuencia en dos partes, una parte es más grande que los datos del fulcro y la otra parte es más pequeña que los datos del fulcro. (4) Utilice una secuencia de clasificación recursiva en ambos lados. Quicksort es más rápido que la mayoría de los algoritmos de clasificación. Aunque podemos escribir algoritmos que son más rápidos que el ordenamiento rápido en algunos casos especiales, en general, no hay nada más rápido que eso. Quicksort es recursivo y no es una buena opción para máquinas con memoria muy limitada.

2 Ordenación por combinación (MergeSort) La ordenación por combinación primero descompone la secuencia que se va a ordenar, divide 1 en 2, 2 en 4 y se descompone a su vez. Cuando se descompone en solo 1 grupo, puede ordenar estos grupos y luego volver a combinarlos con el original secuencia para que todos los datos puedan ser ordenados. La ordenación por combinación es un poco más rápida que la ordenación por montón, pero requiere el doble de memoria que la ordenación por montón porque requiere una matriz adicional.

3 Clasificación de montones (HeapSort) La clasificación de montones es adecuada para ocasiones con grandes cantidades de datos (millones de datos). Heapsort no requiere mucha recursividad o arreglos temporales multidimensionales. Esto es adecuado para secuencias con una gran cantidad de datos. Por ejemplo, si hay más de millones de registros, debido a que la ordenación rápida y la ordenación por combinación utilizan recursividad para diseñar algoritmos, pueden producirse errores de desbordamiento de pila cuando la cantidad de datos es muy grande. La clasificación del montón creará todos los datos en un montón, los datos más grandes estarán en la parte superior del montón y luego intercambiará los datos superiores con los últimos datos de la secuencia. Luego, reconstruya el montón nuevamente, intercambie datos y baje para ordenar todos los datos.

4 Clasificación de shell (ShellSort) La clasificación de shell divide los datos en diferentes grupos, clasifica cada grupo primero y luego realiza una clasificación por inserción en todos los elementos para reducir la cantidad de intercambios y movimientos de datos. La eficiencia promedio es O (nlogn). La racionalidad de la agrupación tendrá un impacto importante en el algoritmo. Ahora use más el método de agrupación de DEKnuth. Shell sort es 5 veces más rápido que bubble sort y aproximadamente 2 veces más rápido que insert sort. La clasificación de Shell es mucho más lenta que QuickSort, MergeSort y HeapSort. Pero es relativamente sencillo, y es adecuado para ocasiones en las que la cantidad de datos es inferior a 5000 y la velocidad no es especialmente importante. Es muy bueno para la clasificación repetida de pequeñas series de datos.

5 Clasificación por inserción (InsertSort) La clasificación por inserción inserta los valores de la secuencia en una secuencia ya ordenada hasta el final de la secuencia. La ordenación por inserción es una mejora de la ordenación por burbujas. Es 2 veces más rápido que el tipo de burbuja. Por lo general, no es necesario utilizar la ordenación por inserción cuando los datos superan los 1000 ni ordenar repetidamente secuencias con más de 200 elementos de datos.

6 Clasificación por burbujas (BubbleSort) La clasificación por burbujas es el algoritmo de clasificación más lento. En la práctica es el algoritmo menos eficiente. Lo hace comparando cada elemento de la matriz un viaje tras otro, hundiendo los números más grandes y subiendo los más pequeños. Es un algoritmo O(n^2).

7 Clasificación de intercambio (ExchangeSort) y clasificación de selección (SelectSort) Estos dos métodos de clasificación son algoritmos de clasificación del método de intercambio y la eficiencia es O(n2). En aplicaciones prácticas, se encuentra básicamente en la misma posición que la clasificación por burbujas. Son solo las etapas iniciales del desarrollo de algoritmos de clasificación y rara vez se utilizan en la práctica.

8 Clasificación Radix (RadixSort) La clasificación Radix no sigue la misma ruta que el algoritmo de clasificación habitual. Es un algoritmo relativamente nuevo, pero solo se puede usar para ordenar números enteros.Si queremos aplicar el mismo método a los números de punto flotante, debemos entender el formato de almacenamiento de los números de punto flotante y mapear los números de punto flotante en un manera especial a un número entero, y luego mapear hacia atrás, lo cual es muy engorroso, por lo que su uso tampoco es mucho. Y, lo más importante, este algoritmo también requiere más espacio de almacenamiento.

9 Resumen La siguiente es una tabla general, que resume aproximadamente las características de todos nuestros algoritmos de clasificación comunes.

método de clasificación

Tiempo promedio

peor de los casos

estabilidad

espacio extra

Observación

burbuja

En 2)

En 2)

estabilizar

O(1)

n horas es mejor

intercambio

En 2)

En 2)

inestable

O(1)

n horas es mejor

elegir

En 2)

En 2)

inestable

O(1)

n horas es mejor

insertar

En 2)

En 2)

estabilizar

O(1)

mejor cuando se ordena en su mayoría

Cardinalidad

O(logRB)

O(logRB)

estabilizar

En)

B es un número real (0-9), y R es un número base (diezcientos)

Caparazón

O (iniciar sesión)

O(ns) 1<s<2

inestable

O(1)

s es el grupo seleccionado

rápido

O (iniciar sesión)

En 2)

inestable

O (iniciar sesión)

Es mejor cuando n es grande

Unir

O (iniciar sesión)

O (iniciar sesión)

estabilizar

O(1)

Es mejor cuando n es grande

montón

O (iniciar sesión)

O (iniciar sesión)

inestable

O(1)

Es mejor cuando n es grande

Guess you like

Origin blog.csdn.net/2301_78064339/article/details/131167078