Este artículo implementa ocho algoritmos de clasificación de uso común: insertar clasificación, clasificación burbujeante, selección de clasificación, clasificación de colinas, clasificación rápida, clasificación de fusiones, apilamiento y clasificación de base LST
El primero es el archivo de ochoalgorithms.java .
Importar java.util.arrays; Insertar clasificación: complejo de tiempo o (n^2) public static void InsertSort (int a [], int n) {para (int i = 1; i <n; ++ i) {{int temp = a [i]; int j = i -1; ;}} // clasificación de burbujas: complejidad de tiempo o (n^2) public static void bubblesort (int a [], int n) {para (int i = n -1; i> 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ; Temp = a [j]; int a [], int n) {para (int i = 0; i <n -1; ++ i) {int min = a [i]; j <n; ++ j) {if (a [a [a [a [a [a [a [a [a [a [a [a [a [a J] <min) {min = a [ j]; Public static void shellsort (int a [], int n) {for (int gap = n / 2; gap> = 1; gap / = 2) {for (int i = gap; i <n; ++ i) { int temp = a [i]; j + gap] = test;}} // clasificación rápida: complejidad de tiempo o (nlgn) public static void Quicksort (int a [], int n) {_quicksort (_quicksort (a, 0, n-1);} pública estática estática Void a la izquierda, q -1); izquierda <derecha && a [right]> = pivot) {--right;} a [izquierda] = a [derecha]; derecha] = a [izquierda];} a [izquierda] = Pivot; , n -1); Mid); -left +1; j];} int i = 0; ] <Newa [J]) {a [k] = newa [i ++];} else {a [k] = newa [j ++];} while (i <= mid -left) {a [k + +] = newa [i ++];} while (j <= right -left) {a [k ++] = newa [j ++];} // clasificación de montón: complejidad de tiempo o (nlgn) public void Heapsort (int a [], int n) {BuiltMaxHeap (a, n); i) {int temp = a [0]; [], int n) {upadjust (a, n);} // La matriz de longitud n se ajusta al público estático público upadjust (int a [], int n) {// Cada elemento con un nodo infantil es atravesado. n) {// niño correcto El valor del valor es mayor que el valor del nodo, los intercambió si (a [2 * i]> a [i -1]) {int temp = a [2 * i]; a [2 * i] = a [i -1]; i -1]> a [i -1]) {int temp = a [2 * i -1]; } // Ajuste Ajustnode (a, n, 2 * i); {// El valor del nodo, intercambie si (a [2 * i -1]> a [i -1]) {int temp = a [2 * i -1]; = a - 1]; de matriz, Radix es la base // Este método es usar el método LST para la clasificación de la base, y el método MST no está incluido en él // El parámetro Radix es la base, generalmente 10; de los números a la matriz a ordenar; Para depositar temporalmente la matriz de [] Count = New Int [Radix]; El primer lugar para el primer lugar para (int i = 0; i <<< istance; ++ i) {System.ArrayCopy (a, 0, newa, 0, n); la matriz Newa. ; // Obtenga el valor del bit de procesamiento actual del elemento de matriz [Radixkey] ++;} // En este momento, cada elemento en el recuento [] se guarda por el número de veces que aparece en el bit Radixkey // Calcule La posición final de cada RadixKey en la matriz, y el rango de número de posición es 1 -N para (int j = 1; j <radix; ++ j) {count [j] = count [j] + count [j -1 ];} // Use el principio de contar la clasificación para lograr un tipo. j]; -Count [Radixkey];} divide = divide * radix;}}}Luego prueba el código testeightalgorithms.java , el código es el siguiente:
Clase pública TenteightAlgorithms {public static void printArray (int a [], int n) {para (int i = 0; i <n; ++ i) {system.print (a [i] +""); == n -1) {System.out.println ();}} public static void main (string [] args) {for (int i = 1; i <= 8; ++ i) {int arrr [] = {45, 38, 26, 77, 128, 38, 25, 444, 61, 153, 9999, 1012, 43, 128}; 2: Ochoalgoritmo. : Ochoalgorithms.cicksort (arr, longitud Ochoalgorithms.lstradixsort (arr, arr.length, 10, 4); Los resultados de la última ejecución son los siguientes:
Lo anterior es todo el código para Java para implementar ocho algoritmos de clasificación de uso común.