La clase de herramientas resume breve y claramente cinco algoritmos de clasificación de Java: clasificación rápida, clasificación de colinas, clasificación de inserción, clasificación de montón y clasificación de fusión. No hay explicación para estos algoritmos de clasificación en el código. Espero verificar las instrucciones relevantes para la parte de la idea. Aquí solo resumiré estos algoritmos para que todos los usen.
Sort de clase pública {public static <AnyType se extiende comparable <? Super AnyType >> Void InsertionSort (AnyType [] a) {Inservationsort (a, 0, A.Length - 1); } privado estático <AnyType se extiende comparable <? Super AnyType >> Void InsertionSort (AnyType [] a, int izquierdo, int right) {int j; // Registre la posición del siguiente dígito del primer elemento más pequeño que TMP para (int p = izquierda; p <= right; p ++) {anyType tmp = a [p]; para (j = p; j> izquierda && tmp.compareto (a [j - 1]) <0; j--) {a [j] = a [j - 1]; } a [j] = tmp; }} public static <AnyType se extiende comparable <? super anyType >> void shellsort (anyType [] arr) {int j; for (int gap = arr.length / 2; gap> 0; gap / = 2) {for (int i = gap; i <arr.length; i ++) {anyType tmp = arr [i]; for (j = i; j> = gap && tmp.compareto (arr [j - gap]) <0; j - = gap) {arr [j] = arr [j - gap]; } arr [j] = tmp; }}} private static int Leftchild (int i) {return i * 2 + 1; } privado estático <AnyType se extiende comparable <? Super AnyType >> Void Perculatewn (AnyType [] arr, int i, int size) {anyType tmp = arr [i]; para (int child; (child = Leftchild (i)) <size; i = child) {if (child! = size - 1 && arr [child] .compareto (arr [niño+1]) <0) {child ++; } if (tmp.compareto (arr [child]) <0) {arr [i] = arr [child]; } else {break; }} arr [i] = tmp; } public static <AnyType se extiende comparable <? Super AnyType >> Void HeapSort (AnyType [] arr) {for (int i = arr.length / 2; i> = 0; i--) {Perculatewn (arr, i, arr.length); } para (int i = arr.length-1; i> = 0; i--) {swapreferences (arr, 0, i); Perculatewn (arr, 0, i); }} PRIVADA ESTÁTICA <AnyType se extiende comparable <? Super AnyType >> void swapreferences (anyType [] arr, int i, int j) {anyType tmp = arr [i]; arr [i] = arr [j]; arr [j] = tmp; } public static <AnyType se extiende comparable <? Super AnyType >> Void Mergesort (AnyType [] arr) {anyType [] tmp = ((anyType []) nuevo comparable [arr.length]); Mergesort (arr, 0, arr.length - 1, tmp); } privado estático <AnyType se extiende comparable <? Super AnyType >> void Mergesort (AnyType [] arr, int Start, int End, AnyType [] tmp) {if (start <end) {int mid = (start + end) >> 1; Mergesort (arr, inicio, mediano, tmp); Mergesort (arr, mediano + 1, final, tmp); fusionar (arr, inicio, medio, final, tmp); }} PRIVADA ESTÁTICA <AnyType se extiende comparable <? Super AnyType >> void fusion (anyType [] arr, int start, int mid, int end, anyType [] tmp) {int i = start, j = mid + 1, k = start; while (i <= mid && j <= end) {if (arr [i] .compareto (arr [j]) <0) {tmp [k ++] = arr [i ++]; } else {tmp [k ++] = arr [j ++]; }} while (i <= mid) {tmp [k ++] = arr [i ++]; } while (j <= end) {tmp [k ++] = arr [j ++]; } for (int m = start; m <= end; m ++) {arr [m] = tmp [m]; }} public static <AnyType se extiende comparable <? Super AnyType >> void Quicksort (AnyType [] arr) {Quicksort (arr, 0, arr.length - 1); } privado estático <AnyType se extiende comparable <? Super AnyType >> void Quicksort (AnyType [] arr, int izquierdo, int derecho) {if (izquierda + longitud_diff <= right) {anyType pivot = mediano (arr, izquierda, derecha); int i = izquierda, j = derecho; while (true) {while (arr [++ i] .compareto (pivot) <0); while (arr [-j] .compareto (pivot)> 0); if (i <j) {swapreferences (arr, i, j); } else {break; }} swapReferences (arr, i, derecha); Quicksort (arr, izquierda, i - 1); Quicksort (arr, i + 1, derecha); } else {insisttionsort (arr, izquierda, derecha); }} PRIVADA ESTÁTICA <AnyType se extiende comparable <? Super AnyType >> AnyType Medium (AnyType [] arr, int izquierdo, int derecho) {int Center = (izquierda + derecha) / 2; if (arr [center] .compareto (arr [izquierda]) <0) {swapreferences (arr, centro, izquierda); } if (arr [izquierda] .compareto (arr [right])> 0) {swapreferences (arr, izquierda, derecha); } if (arr [center] .compareto (arr [right]) <0) {swapreferences (arr, centro, derecha); } return arr [right]; } private final static int long_diff = 20;}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.