Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

94
Vistas
Comparación de dígitos de clasificación Radix

Tengo una implementación del algoritmo LSD Radix Sort y me preguntaba cómo contar la cantidad de comparaciones de dígitos durante el procedimiento de clasificación. Sé que el algoritmo no se basa en la comparación, pero todavía hay algún tipo de comparación entre los dígitos de los elementos Integer que ordena el algoritmo. ¿Alguien puede señalar dónde se lleva a cabo la comparación?

¡Gracias!

LSDRadixOrdenar:

 public static void lsdRadixSort(int[] a) { final int BITS = 32; // each int is 32 bits final int R = 1 << BITS_PER_BYTE; // each bytes is between 0 and 255 final int MASK = R - 1; // 0xFF final int w = BITS / BITS_PER_BYTE; // each int is 4 bytes int n = a.length; int[] aux = new int[n]; for(int d = 0; d < w; d++) { // compute frequency counts int[] count = new int[R+1]; for(int i = 0; i < n; i++) { int c = (a[i] >> BITS_PER_BYTE*d) & MASK; count[c + 1]++; } // compute cumulates for(int r = 0; r < R; r++) { count[r+1] += count[r]; } //for most significant byte, 0x80-0xFF comes before 0x00-0x7F if(d == (w - 1)) { int shift1 = count[R] - count[R/2]; int shift2 = count[R/2]; for(int r = 0; r < R/2; r++) { count[r] += shift1; } for(int r = (R/2); r < R; r++) { count[r] -= shift2; } } // move data for(int i = 0; i < n; i++) { int c = (a[i] >> BITS_PER_BYTE*d) & MASK; aux[count[c]++] = a[i]; } // copy back for(int i = 0; i < n; i++) { a[i] = aux[i]; } } }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Bueno, como bien dices, no hay comparaciones. La operación que más se acerca a eso es:

 count[c + 1]++;

donde c es un byte del entero. Cada número entero tiene 4 bytes, por lo que lo hace exactamente 4*n veces.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda