elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  algoritmo de ordenamiento radix sort en java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: algoritmo de ordenamiento radix sort en java  (Leído 5,621 veces)
+ 1 Oculto(s)

Desconectado Desconectado

Mensajes: 298


un defecto se puede convertir en una virtud


Ver Perfil WWW
algoritmo de ordenamiento radix sort en java
« en: 13 Junio 2016, 07:44 am »

Código
  1.  
  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.HashMap;
  5. import java.util.Map;
  6.  
  7. /**
  8.  *
  9.  * @author qwery,azc
  10.  */
  11. public class RadixSort {
  12.  
  13.    public ArrayList<Integer> radixSort(ArrayList<Integer> entryData) {
  14.        int max = Collections.max(entryData);
  15.        max = cantidadDigitos(max);
  16.        Map<Integer, ArrayList> regid = new HashMap();
  17.        int dataAux = 0;
  18.        int digMenorSig = 0;
  19.        int porciento = 10;
  20.        ArrayList<Integer> lista = new ArrayList<>();
  21.        ArrayList<Integer> copiaSort = new ArrayList<>();
  22.        for (int i = 0; i < max; i++) {
  23.  
  24.            porciento *= 10;
  25.            for (int j = 0; j < entryData.size(); j++) {
  26.                dataAux = entryData.get(j);
  27.                digMenorSig = dataAux % 10;
  28.                lista.add(dataAux);
  29.                regid.put(digMenorSig, lista);
  30.                dataAux = dataAux / porciento;
  31.            }
  32.  
  33.            for (Map.Entry<Integer, ArrayList> entry : regid.entrySet()) {
  34.                Integer key = entry.getKey();
  35.                ArrayList<Integer> value = entry.getValue();
  36.                for (int j = 0; j < value.size(); j++) {
  37.                    copiaSort.add(value.get(j));
  38.                }
  39.  
  40.            }
  41.            entryData=copiaSort;
  42.  
  43.        }
  44.        for (int i = 0; i < entryData.size(); i++) {
  45.            System.err.println(entryData.get(i));
  46.        }
  47.        //System.out.println("max " + max);
  48.        return null;
  49.    }
  50.  
  51.    public int cantidadDigitos(int data) {
  52.        int res = 0;
  53.        while (data > 0) {
  54.            data = data / 10;
  55.            res++;
  56.        }
  57.        return res;
  58.    }
  59.  
  60.    public static void main(String args[]) {
  61.        RadixSort r = new RadixSort();
  62.        ArrayList<Integer> a = new ArrayList();
  63.        a.add(34);
  64.        a.add(27);
  65.        a.add(38);
  66.        r.radixSort(a);
  67.  
  68.    }
  69. }
  70.  
  71.  



no funciona... no se en que estoy fallando ayuda...


En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: algoritmo de ordenamiento radix sort en java
« Respuesta #1 en: 13 Junio 2016, 15:39 pm »

a ver realmente no he visto todo el codigo. Pero creo que la variable max es la responsable.

Código
  1. int max = Collections.max(entryData);
  2.        max = cantidadDigitos(max);

La inicializas 2 veces ¿eso es correcto?

cantidadDigitos es una funcion propia por lo que veo.

Por que no mejor un.

Código
  1. String.valueOf(max).length();

Repito no he visto tu codigo completo y ahora no recuerdo el algoritmo de radix sort.

Otra

Código
  1.            for (int j = 0; j < entryData.size(); j++) {
  2.                dataAux = entryData.get(j);
  3.                digMenorSig = dataAux % 10;
  4.                lista.add(dataAux);
  5.                regid.put(digMenorSig, lista);
  6.                dataAux = dataAux / porciento;
  7.            }

dataAux lo inicializas al inicio del ciclo y al final. No tiene caso la ultima linea de ese ciclo, segun vi en el codigo no lo vuelves a usar fuera de ese ciclo.

Una mas

Código
  1. int porciento = 10;


Luego lo multiplicas por 10 al comenzar el ciclo principal en cada vuelta pero solo lo usas en ese ultima linea que te comente y la variable sobre la cual es aplicada se borra en el proximo ciclo.

Última la funcion retorna null cuando deberia de retornar el array ordenado.

Saludos




« Última modificación: 13 Junio 2016, 15:48 pm por AlbertoBSD » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
auxilio metodo de ordenamiento quick sort
Java
genteseria 2 3,165 Último mensaje 2 Julio 2007, 22:33 pm
por alvk4r
algoritmo radix sort en java
Java
Bleach@lex 2 31,462 Último mensaje 2 Diciembre 2009, 06:41 am
por Bleach@lex
ERROR EN CODIGO ORDENAMIENTO RADIX SORT
Java
SAHEKA_14 1 5,087 Último mensaje 24 Diciembre 2009, 03:27 am
por mayofunk
duda de la eficiencia del Ordenamiento por combinacion - mezcla - merge sort
Programación General
jhonatanAsm 4 3,205 Último mensaje 13 Julio 2012, 22:08 pm
por jhonatanAsm
ordenamiento vectores collections sort
Java
basickdagger 1 2,186 Último mensaje 27 Septiembre 2012, 12:53 pm
por basickdagger
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines