Este artículo describe el método de implementación de la clasificación de cócteles en la clasificación de intercambio de Java. Compártelo para su referencia. Los detalles son los siguientes:
Clasificación de cócteles, es decir, clasificación direccional de burbujas, clasificación de agitación de cócteles, clasificación de revuelo (también se puede considerar como una deformación de la clasificación de selección), clasificación de ondas, clasificación de ida y vuelta o clasificación de la hora feliz, es una deformación de la clasificación de burbujas. La diferencia entre este algoritmo y la clasificación de burbujas es que al clasificar, se clasifica en dos direcciones en la secuencia.
Diferente de la clasificación de burbujas:
La clasificación de cócteles es equivalente a una ligera deformación de la clasificación de burbujas. La diferencia es de baja a alta y luego alta a baja, mientras que el tipo de burbuja solo compara cada elemento en la secuencia de baja a alta. Puede obtener un rendimiento ligeramente mejor que el tipo de burbujas porque la clasificación de burbujas solo se compara desde una dirección (de baja a alta) y solo mueve un elemento por bucle.
Tomando la secuencia (2,3,4,5,1) como ejemplo, la clasificación de cócteles requiere solo una visita a la secuencia para completar la clasificación, pero cuatro veces si se usa la clasificación de burbujas. Sin embargo, en el estado de una secuencia desordenada, la eficiencia de la clasificación de cócteles y la clasificación de burbujas es muy pobre.
La peor complejidad del tiempo o (n^2)
Complejidad de tiempo óptima o (n)
Complejidad de tiempo promedio o (n^2)
La imagen dinámica de la clasificación de cócteles es la siguiente:
Análisis de código:
paquete com.baobaotao.test; = array.length; // longitud de bucle/2 veces para (int i = 0; i <longitud/2; i ++) {para (int j = i; j <longitud-i-1; j ++) {if (array [ J]> Array [J+1]) {Swap (Array, J, J+1); <Array [j-1]) {swap (array, j-1, j); static void cocatailsortflag (int [] array) {int longitud = array.length; ; = falso; ; intercambiar b * @param c El número que se intercambiará C */ public static void swap (int [] a, int b, int c) {int temp = 0; b]> a [c]) {temp = a [b]; void printarr (int [] array) {for (int c: array) {system.out.print (c + ""); int [] número = {11,95,45,15,78,84,51,24,12}; Cocatailsort (número);Análisis de resultados:
11 12 45 15 78 84 51 24 95 11 12 15 24 45 78 51 84 95 11 12 15 24 45 51 78 84 95 11 12 15 24 45 51 78 84 95 ************************************** * *** 11 12 45 15 78 84 51 24 95 11 12 15 24 45 78 51 84 95 11 12 15 24 45 51 78 84 95
Se puede ver que la cantidad de veces que se clasifica los cócteles es mucho menor que el de las clases de burbujas comunes. Solo se necesitan 4 veces, y la versión mejorada de la clasificación de cócteles del logotipo solo requiere 3 veces para completar la clasificación.
Espero que este artículo sea útil para la programación Java de todos.