Red de conocimiento informático - Conocimiento informático - Diagrama de flujo ilustrado de clasificación en zonas montañosas

Diagrama de flujo ilustrado de clasificación en zonas montañosas

.ejemplo-btn{color:#fff;color de fondo:#5cb85c;color de borde:#4cae4c}.ejemplo-btn:hover{color:#fff;color de fondo:#47a447; color de borde:#398439} .example-btn:active{imagen-de-fondo:none}div.example{ancho:98%;color:#000;color-de-fondo:#f6f4f0;color-de-fondo:#d0e69c;color-de-fondo:#dcecb5;fondo- color:#e5eecc;margen:0 0 5px 0;relleno:5px;borde:1px sólido #d4d4d4; imagen de fondo:-webkit-linear-gradient(#fff,#e5eecc 100px);imagen de fondo:gradiente lineal( #fff,#e5eecc 100px)}div.example_code{ line-height:1.4em;width:98%;background-color:#fff;padding:5px;border:1px solid #d4d4d4;font-size:110%;font -familia:Menlo,Monaco, "Consolas", "Andale Monaco", "Consolas", "Andale Monaco", "Andale Monaco Consolas", "Andale Mono", "lucida console", "Courier New",monospace;palabra- break:break-all;word-wrap:break-word}div.example_result{ background-color:#fff;padding:4px;border:1px solid #d4d4d4;width:98%}div.code{width:98%; borde:1px sólido #d4d4d4;color de fondo:# f6f4f0;color:#444;padding:5px;margin:0}div.code div{font-size:110%}div.code div,div.code p,div .example_code p{font-family:"Courier New" }pre{margin:15px auto;font:12px/20px Menlo,Monaco,Consolas, "Andale Mono", "lucida console", "Courier New",monospace;white- space:pre-wrap; word-break:break-all;word-wrap:break-word;border:1px solid #ddd;border-left-width:4px;padding:10px 15px} Los algoritmos de clasificación se encuentran entre las estructuras de datos y algoritmos Uno de los algoritmos más básicos. Los algoritmos de clasificación se pueden dividir en clasificación interna y clasificación externa. La clasificación interna se refiere a la clasificación de registros de datos en la memoria, mientras que la clasificación externa significa que durante el proceso de clasificación, debido a la gran cantidad de datos a clasificar, no se pueden acomodar todos los registros ordenados al mismo tiempo, por lo que es necesario acceder a la memoria externa.

Los algoritmos de clasificación interna comunes incluyen clasificación por inserción, clasificación Hill, clasificación por selección, clasificación por burbujas, clasificación normalizada, clasificación rápida, clasificación en montón, clasificación por base, etc. El siguiente es el algoritmo de clasificación Hill:

La clasificación Hill, también conocida como algoritmo de clasificación incremental descendente, es una versión más eficiente y mejorada de la clasificación por inserción. Sin embargo, la clasificación Hill es un algoritmo de clasificación inestable.

La ordenación en colina es un método mejorado basado en las siguientes dos características de la ordenación por inserción:

La ordenación por inserción es eficiente cuando se opera con datos casi ordenados, es decir, puede lograr el eficiencia de la clasificación lineal; sin embargo, la clasificación por inserción suele ser ineficiente porque la clasificación por inserción solo puede mover un bit de datos a la vez;

La idea básica de la clasificación Hill es ordenar todo el registro La secuencia es dividido en dos partes. La idea básica de la clasificación Hill es: primero dividir la secuencia completa de registros que se van a clasificar en varias subsecuencias que se insertan directamente en la secuencia de clasificación. Después de que toda la secuencia de registros esté "básicamente ordenada", todos los registros se insertan directamente en la secuencia. secuencia.

1. Pasos del algoritmo

Selecciona una secuencia incremental t1, t2,..., tk, donde ti > tj, tk = 1

Ordena los; secuencias según el número k de secuencias incrementales

Para cada clasificación, según el incremento ti. Según el incremento ti correspondiente, la secuencia a ordenar se divide en varias subsecuencias de longitud m, y la ordenación por inserción directa se realiza en cada subtabla respectivamente. Solo cuando el factor de incremento es 1 se considera que toda la secuencia es una tabla, y la longitud de la tabla es la longitud de toda la secuencia.

2. Animación

Implementación de código JavaScript función de ejemplo shellSort ( arr ) {

var len = arr length ,

temp ,

brecha = 1 ;

mientras ( brecha 0 ; brecha = Matemáticas .{

for ( var i = brecha ; i = 0 && arr [ j ] > temp ; j -= espacio ) {

arr [ j + espacio ] = arr [ j ]

}

arr [ j + espacio ] =; temp ;

}

}

Devolver arr

}

Ejemplo de Python def shellSort ( arr ) :

importar matemáticas

brecha = 1

mientras ( brecha 0 :

para i en rango ( brecha , len ( arr ) ):

temp = arr [ i ]

j = i-gap

mientras j >= 0 y arr [ j ] > temp:

arr [ j+espacio ] = arr [ j ]

j- = espacio

arr [ j+espacio ] = temporal

espacio = math .floor ( gap/ 3 )

return arr

Ir ejemplo func shellSort ( arr [] int ) [] int {

length := len ( arr )

espacio := 1

para espacio < largo / 3 {

espacio = espacio * 3 + 1

}

para espacio > 0 {

para i := espacio ; i < longitud ++ {

temp := arr [ i ]

j := i - espacio

for j > = 0 & amp;& arr [ j ] > temp {

arr [ j + espacio ] = arr [ j ]

j -= brecha

}

arr [ j + brecha ] = temp

}

brecha = brecha / 3

}

Devolver arr

}

Ejemplo de Java public static void shellSort ( int [ ] arr ) {

int longitud = arreglo.

int temp ;

for ( int paso = longitud / 2 ; paso >= 1 ; paso /= 2 ) {

for ( int i = paso ; i = 0 && arr [ j ] > temp ) {

arr [ j +

paso ] = arr [ j ]

j -= paso

}

arr [ j + paso ] = temp

}

}

}

}

Función de ejemplo PHP shellSort ( $arr )

{

$len = recuento ( $arr )

$temp = 0

$espacio = 1

mientras ( $espacio; 0 ; $brecha = piso ( $brecha / 3 ) ){

para ( $i = $brecha ; $i = 0 && $arr [ $j ] > $temp ; $j -= $brecha ) {

$arr [ $j + $gap ] = $arr [ $j ]

}

$arr [ $j + $gap ] = $temp ;

}

}

}

Devuelve $arr ; >

Ejemplo de C void shell_sort (int arr [ ] , int len ​​​​) {

int gap , i , j

int temp

for ( espacio = len >> 1 ; espacio > 0 ; espacio >>= 1 )

for ( i = espacio ; i = 0 && arr [ j ] >.temp ; j -= espacio )

arr [ j + espacio ] = arr [ j ]

arr [ j + espacio ] = temp

}

}

Plantilla de muestra de C++

void shell_sort ( matriz T [ ] , longitud int ) {

int h = 1

while; ( h = 1 ) {

for ( int i = h ; i = h && array [ j ] 0) { for (int i = brecha; i arr.Length; i++) { int tmp = arr [i]; int j = i - espacio; while (j >= 0 && arr[j] > tmp) { arr[j + espacio] = arr[j]; = tmp } gap /= 3 }}Lo anterior es una introducción detallada al algoritmo de clasificación Hill, clasificación por inserción, clasificación Hill, clasificación por selección, clasificación por burbuja, clasificación por inserción, clasificación Hill, clasificación por selección, clasificación por burbuja, clasificación por fusión, Los algoritmos de clasificación, como la clasificación rápida, la clasificación en montón y la clasificación por base, tienen cada uno sus propias ventajas y desventajas, que se pueden resumir en un diagrama:

Acerca de la complejidad del tiempo

Orden cuadrado (O (n2)) algoritmos de clasificación Tres tipos de clasificación simple: inserción directa, selección directa y clasificación por burbujas.

Ordenación logarítmica lineal (O(nlog2n)) rápida, ordenación en montón y fusión

Ordenación O(n1+§)), donde § está entre 0 y 1 constante. Clasificación por montaña

Clasificación por orden lineal (O(n)), clasificación básica, además de clasificación por cubos y clasificación por cajas.

Acerca de la estabilidad

Algoritmos de clasificación estables: clasificación de burbujas, clasificación de inserción, clasificación de fusión y clasificación de base.

Algoritmos de clasificación inestables: clasificación por selección, clasificación rápida, clasificación por montaña, clasificación por montón.

Explicación de la terminología:

n: tamaño de datos

k: número de "depósitos"

Clasificación in situ: ocupar una constante número de memoria, no hay memoria adicional ocupada

Clasificación in situ: memoria adicional ocupada

Estabilidad: el orden de dos valores clave iguales después de la clasificación es el mismo que antes de la clasificación

2 claves están en el mismo orden que antes de ordenar

2 claves están en el mismo orden que antes de ordenar

2 claves están en el mismo orden que antes de ordenar

2 Las claves están en el mismo orden que antes de ordenar

Las 2 claves están en el mismo orden que antes de ordenar. p>