Este artículo presenta principalmente cómo Java logra ocho algoritmos de clasificación de uso común: insertar clasificación, clasificación de burbujas, selección de clasificación, clasificación de colinas, clasificación rápida, clasificación de fusiones, orden de apilamiento y clasificación de base LST.
Clasificación
1) Insertar clasificación (clasificación insertada directamente, clasificación de la colina)
2) Clasificación de intercambio (clasificación burbujeante, clasificación rápida)
3) Seleccione la clasificación (seleccione directamente la clasificación, la clasificación apilada)
4) Fusionar clasificación
5) Distribución y clasificación (clasificación base)
El espacio auxiliar requerido es el más: el espacio más auxiliar para fusiones y clasificación: la velocidad de theverage más rápida del orden de apilamiento: clasificación rápida
Inestable: clasificación rápidamente, clasificación de colinas, apilada.
Echemos un vistazo a la relación entre la clasificación de 8:
1. Insertar directamente la clasificación
(1) Ideas básicas: entre los conjuntos a clasificar, suponiendo (N-1) [n> = 2] el número ya es fila
En orden, ahora el número NN se inserta en el pedido anterior, de modo que este número N
También está en orden. Esto se distribuye repetidamente hasta que todo el orden esté en orden.
(2) Ejemplo
(3) Date cuenta con Java
paquete com.njue; 17,18,23,34,15,35,25,53,51}; Temp = a [i]; test;} for (int i = 0; i <a.length; i ++) {System.out.println (a [i]);}}}}2. Sorteo de la colina (clasificación mínima incremental)
(1) Ideas básicas: El número de grupos que se clasificará por el algoritmo se divide en varios grupos de acuerdo con el número de D (N/2, N como el número a clasificar). y ordenado, y luego use un aumento más pequeño (d/2) para agruparlo, y luego inserte directamente la clasificación en cada grupo. Cuando el incremento se reduce a 1, el tipo se inserta directamente y el tipo se completa.
(2) Ejemplo:
(3) Date cuenta con Java
PublicClass ShellSort {PublicShellSort () {int a [] = {1,54,3,78,34,12,45,56,100}; .ceil (d1/2); ) {int j = id; j+d] = temp;}} if (d == 1) {break;} para (int i = 0; i <a.length; i ++) {system.out.println (a [i]);} }}3. Selección simple de clasificación
(1) Ideas básicas: en un grupo a ordenar, seleccione el número más pequeño del número de números y la primera posición;
Luego encuentre el menor número de la segunda posición en los números restantes, de modo que el bucle se compara con el último número del último número y el último número.
(2) Ejemplo:
(3) Date cuenta con Java
Public Class SelectSort {public SelectSort () {int a [] = {1,54,3,78,34,12,45}; ) {int j = i+1; j]; i] );}}4. Clasificación de montón
(1) Ideas básicas: la clasificación de embalaje es una selección de clasificación en forma de árbol, que es una mejora efectiva de la selección directa de clasificación.
La definición del montón es la siguiente: una secuencia (H1, H2, ..., Hn) con n elementos, y solo como satisfecho (Hi> = H2i, Hi> = 2i+1) o (Hi <= H2i, Hola <= 2i 2i) +1) (i = 1,2, ..., n/2) se llama un montón. Aquí solo discutimos las pilas que cumplen con las condiciones de la primera. Se puede ver desde la definición del montón de que el elemento superior (es decir, el primer elemento) debe ser el elemento más grande (un volcado superior grande). El árbol binario completo puede representar intuitivamente la estructura del montón. La parte superior de la pila está enraizada, y los otros son sub -trilos y sub -trilos derecho. Inicialmente, las secuencias a ordenar se consideran como un árbol binario almacenado en orden, ajustando su orden de almacenamiento para que se conviertan en una pila. Luego intercambie el nodo raíz con el último nodo del montón. Luego vuelva a ajustar el número anterior (N-1) para que se acumule. Según este tipo, hasta que solo hay dos nodos, y los intercambien, y finalmente obtenga una secuencia ordenada de N nodos. Desde la perspectiva de la descripción del algoritmo, la secuencia de apilamiento requiere dos procesos. Por lo tanto, hay dos funciones composición de la clasificación de montón. Una es la función de penetración de la pila, y la otra es llamar repetidamente a la función de infiltración para implementar la función de clasificación.
(2) Ejemplo:
Secuencia inicial: 46,79,56,38,40,84
Construcción:
Intercambiar, patear el número máximo de la pila
Los nodos restantes se construyen nuevamente, y el número máximo se intercambia
Empuja en orden: se intercambian los últimos dos nodos en la última pila de los últimos dos nodos, uno se expulsa y el tipo se completa.
(3) Date cuenta con Java
Importar java.util.arrays; , 15,35,25,53,51}; Longitud;/ Circle el incorporado para (int i = 0; i <ArrayLength-; i ++) {// BuildMaxHeap (a, ArrayLength-i); 0, ArrayLength-i); Método GoneralTed stub int tmp = data [i]; ) {// TODO Auto-Gonement Method Stub // El nodo principal del nodo (último nodo) desde lastindex start for (int i = (lastindex-); i> = 0; i-) {// k Guardar el nodo Int k = i; El BiggerIndex es más pequeño que LastIndex, es decir, el nodo derecho del nodo K que representa el nodo K representado por BiggerIndex+1 existe si (BigueIndex <LastIndex) {// si el valor del nodo derecho es mayor, (datos [BiggerIndex ] <data [bigyIndex+1]) {// bigueyIndex siempre registra el índice más grandeindex ++;} // ] <data [bigialIndex]) {// intercambia su intercambio (datos, k, bigueindex); que el valor de los nodos izquierdo y derecho.5. Clasificación de burbujas
(1) Ideas básicas: en un grupo a clasificar, todos los números dentro del alcance que aún no están descargados, comparación y ajuste de los dos dos números adyacentes de arriba a abajo, de modo que los más grandes se hunden, más pequeños, más pequeños. Es decir: cada vez que se comparan dos números adyacentes, encuentran que sus requisitos de clasificación y clasificación son opuestos e intercambiarán.
(2) Ejemplo:
(3) Date cuenta con Java
clase pública Bubblesort {publicBBitSort () {inta [] = {49,38,65,97,76,13,49,78,34,5,4,62,98,54,54,56, 17,18,23 , 34,15,35,25,53,51}; Longitud-1-i; +1] = temp;}}} para (int i = 0; i <a.length; i ++) {system.out.println (a [i]);}}6. Clasifique rápidamente
(1) Ideas básicas: elija un elemento de referencia, generalmente elija el primer elemento o el último elemento. Elemento de referencia.
(2) Ejemplo:
(3) Date cuenta con Java
PublicClass Quicksort {Inta [] = {49,38,65,97,76,13,27,78,34,264,5,4,99,98,54,56,17,18 23,34,15,35,25 , 53,51}; [] List, int Low) {int tmp = list [low]; // El primero de la matriz como el eje central (bajo <high) {while (low <high && list) [high]> = tmp) { High-;} List [Low] = List [High]; [High] = List [bajo]; int Low, int alto) {if (bajo <high) {int middle = getMiddle (lista, bajo, alto); Clasificación de Tablas de baja característica_quicksort (Lista, Middle + 1, High); la matriz es vacía_quicksort (a2,0, a2.length -1);}}}7. Fusionar clasificación
(1) Clasificación básica: el método de clasificación de archivos adjuntos (fusiones) es fusionar dos (o más) o más formas en un nuevo pedido, es decir, prefacio. Luego combine la secuencia de orden en el orden general.
(2) Ejemplo:
(3) Date cuenta con Java
Importar java.util.arrays; , 15,35,25,53,51}; (a [i]);} publicvoid sort (int [] data, int izquierdo, int right) {// toDo-goneralTedMethod stub if (izquierda <derecha) { / / / find intermediate índice int center = (izquierda+derecha) /2; ;}} Publicvoid fusion (int [] data, int izquierdo, int Center, int Right) {// TODO-Goneorates int [data.length]; Middle Array int Project = Left; ]) {tmParr [tercero ++] = data [izquierda ++];} else {tmParr [tercero ++] = data [Mid ++]; ++];} while (izquierda <= center) {tmParr [tercero ++] = data [izquierda ++]; println (arrays.toString (datos));8. Clasificación de base
(1) Ideas básicas: uniforme Todos los valores de comparación (enteros positivos) a la misma longitud del número, y el número de dígitos cortos se compone antes de cero. Luego, comenzando desde la posición más baja y la clasificación a su vez. Esto se convertirá en una secuencia ordenada desde la posición más baja hasta la clasificación de bits más alta.
(2) Ejemplo:
(3) Date cuenta con Java
Import java.util.arrayList; , 54,101,56,17,18,23,34,15,35,25,53,51}; {System.out.println (a [i]);}} public void sort (int [] array) {// Determinar primero el número de viajes de clasificación; <Array.length; TIME ++;} // Crear 10 colas; ins> (); <matriz J <Array; int) Math.Pow (10, I I 10, I); 0; = queue.get (k);Lo anterior es todo el contenido de este artículo.