ERROR EN CODIGO ORDENAMIENTO RADIX SORT

Iniciado por SAHEKA_14, 15 Diciembre 2009, 03:03 AM

0 Miembros y 1 Visitante están viendo este tema.

SAHEKA_14

Hola !! :) Me preguntaba si me podrian ayudar a buscar el error que causa la exepcion en el siguiente codigo de Radix Sort. Este codigo se basa en el metodo Radix e no es por medio de desplazamiento de bits. :D
Esque ya me tarde y canse en buscrale y no le encuentro, esta un poco raro, es que no me nase en un algoritmo para crearlo. Echenme la mano porfas.. >:(


public class RadixShort{

int Ncolas=10;// numero de colas  o arreglos necesarios

int maxAlmacColas=15; //numero max que almacenan

int arregloColas[][];



int numeroPasadas=0;

public RadixShort(){}

int NumerosArreglo;

int divisorAuxiliar=1;



public void creandoArregloColas(){

arregloColas=new int[Ncolas][maxAlmacColas];

}

public void analisisNumeros(int numeros[]){

int temp;

String NumString;

NumerosArreglo=numeros.length;



for(int x=0;x<NumerosArreglo;x++){

NumString=Integer.toString(numeros[x]);

temp=NumString.length();

if(numeroPasadas<temp){

numeroPasadas=temp;

}

}

for(int y=0;y<numeroPasadas-1;y++){

divisorAuxiliar=divisorAuxiliar*10;

}

}

public void realizarOrdenamiento(int numeros[]){

int ordenTemN[]=new int[NumerosArreglo];



for(int analisiN=numeroPasadas;analisiN>0;analisiN--){

for(int arregloN=0;arregloN<arregloColas.length;arregloN++){

int casillas=0;

for(int n=0;n<NumerosArreglo;n++){//evalua los numeros arreglo[] de numeros



int modulo=0;

int divicion=0;

int divAux=divisorAuxiliar;

int numenPos;

boolean bandera=true;

int v=0;

for(int x=1;x<=numeroPasadas;x++){//3 vueltas

if(bandera==true){

divicion=numeros[n]/divAux;

modulo=numeros[n]%divAux;

numenPos=divicion;//agrego

}else{

divicion=modulo/divAux;

modulo=modulo%divAux;

numenPos=divicion;//agrego a otra variable

}

if(x==analisiN){



if(arregloN==numenPos){//aki comparas el numero con la pos Arreglo o Cola al k Pertenece

arregloColas[arregloN][casillas]=numeros[n];



System.out.println("-arregloN: "+arregloN+": "+arregloColas[arregloN][casillas]);

casillas++;

v++;

}

}

divAux=divAux/10;

bandera=false;



}//for centro

}//for arreglos

}//arreglo de colas o matriz



int contTemp=0;

System.out.println("GUARDANDO EN ARRAY TEMPORAL");

for(int colaN=0;colaN<arregloColas.length;colaN++){

System.out.println("Posicion"+colaN);

for(int casilla=0;casilla<arregloColas[0].length;casilla++){

if(arregloColas[colaN][casilla]!=0){

System.out.println(arregloColas[colaN][casilla]);

ordenTemN[contTemp]=arregloColas[colaN][casilla];

contTemp++;

}

}

//System.out.println("\n");

}

numeros=ordenTemN;

}

}

public static void main(String arg[]){

RadixShort radix=new RadixShort();



int numeros[]={235,245,322,349,567,424,134,828,510};

radix.creandoArregloColas();

radix.analisisNumeros(numeros);

radix.realizarOrdenamiento(numeros);

}

}


Gracias de Antemano. ;)

mayofunk

Podrías poner la exepcion y la linea en donde ocurre.
Eso ayudaría.