Idea de algoritmo: Ordene mediante un solo dígitos, diez dígitos ... a su vez. Cada POS tiene un proceso de asignación y un proceso de recolección. La matriz [i] [0] registra el número de datos en la fila I-Th.
clasificación de paquetes;/*** Cardinality Sort* promedio o (d (n+r)), mejor o (d (n+r)), peor o (d (n+r)); Complejidad espacial O (N+R); estable; Más complejo * D es el número de dígitos, r es el número de listas vinculadas después de la asignación * @author zeng * */public class RadixSort {// pos = 1 representa dígitos únicos, pos = 2 representa diez dígitos public static int getnuminpos (int num, int pos) {int tmp = 1; para (int i = 0; i <pos - 1; i ++) {tmp * (10;} tmp) % 10;} // Encontrar el dígito máximo dpublic static int getmaxweishu (int [] a) {int max = a [0]; for (int i = 0; i <a.length; i ++) {if (a [i]> max) max = a [i];} int tmp = 1, d = 1; while (true) {tmp *= 10; ! = 0) {d ++;} else break;} return d;} public static void radixSort (int [] a, int d) {int [] [] array = new int [10] [a.LoTength+1]; for (int i = 0; i <10; i ++) {array [i] [0] = 0; // array [i] [0] récord el número de número de datos para (int = 1; pos <= d; Array [fila] [0]; getMaxweishu (a)); para (int i: a) system.out.print (i + "");}}Presta atención a los resultados de la ejecución:
Resumir
Lo anterior es todo el contenido de este artículo sobre la implementación del código de clasificación de cardinalidad para la implementación del idioma Java. Espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados con Java en este sitio web. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!