Sv Community El Salvador

Soporte y Tecnología => Programación => Java => Mensaje iniciado por: JGuillen™ en septiembre 17, 2008, 04:02:42 pm

Título: Sort Array in Java [Help]
Publicado por: JGuillen™ en septiembre 17, 2008, 04:02:42 pm
Alguien puede ayudarme o darme algun tips de como puedo ordenar un array bidimensional???  :big_boss:


Como a si?? digamos q tengo el siguiente array?

0=>Balon, Aguila, Coco;
1=>Casa, Bota, Ave;

Entonces q haya alguna funcion para ordenarlos de tal manera q quede a si...

0=>Aguila, Bote, Coco;
1=>Ave,Bota,Casa;

Se que en Java hay una funcion Arrays.sort(Array) pero solo funciona con arrays unidimensionales... mientras q si lo hago con un bidimensional me da error...????


De antemano graxias..!  :thumbsup:
Título: Re: Sort Array in Java [Help]
Publicado por: Camus de Acuario en septiembre 17, 2008, 04:14:49 pm
por si tienes un array con esta estructura:

Código: [Seleccionar]
row | col. 1 | col. 2
---------------------
 0  |   3    | Kevin
 1  |   3    | Alice
 2  |   2    | Steve
 3  |   1    | Adam
 4  |   2    | Sammy

y el codigo de inicializacion es algo asi:

Código: [Seleccionar]
var array = new Array();

array[0] = new Array ( 3, "Kevin" );
array[1] = new Array ( 3, "Alice" );
array[2] = new Array ( 2, "Steve" );
array[3] = new Array ( 1, "Adam"  );
array[4] = new Array ( 2, "Sammy" );

el sort array deberia ser asi:

Código: [Seleccionar]
1,Adam
2,Sammy
2,Steve
3,Alice
3,Kevin

las funciones serian algo asi

Código: [Seleccionar]
function compare ( array, left, right ) {

    var depth = 0;

   
while ( depth < array[left].length && depth < array[right].length ) {


if ( array[left][depth] < array[right][depth] )
    return 1;
else if ( array[left][depth] > array[right][depth] )
    return -1;

depth++;    

    }

    return 0;

}


function qsort ( array, lo, hi ) {

  var low  = lo;
  var high = hi;
  mid = Math.floor( (low+high)/2 );

  do {
    while ( compare(array, low,  mid) > 0 )
      low++;

    while ( compare(array, high, mid) < 0 )
      high--;

    if ( low <= high ) {
      swap( array, low, high );
      low++;
      high--;
    }

  } while ( low <= high );

  if ( high > lo )
    qsort( array, lo, high );

  if ( low < hi )
    qsort( array, low, hi );

}

function swap ( a, i, j ) {

  var tmp = a[i];
  a[i] = a[j];
  a[j] = tmp;

}


var array = new Array();

array[0] = new Array ( 3, "Kevin" );
array[1] = new Array ( 3, "Alice" );
array[2] = new Array ( 2, "Steve" );
array[3] = new Array ( 1, "Adam"  );
array[4] = new Array ( 2, "Sammy" );

qsort ( array, 0, array.length-1 );

espero te sirva amigo
Título: Re: Sort Array in Java [Help]
Publicado por: rdoggsv en septiembre 17, 2008, 04:43:49 pm
mira no tengo java a la mano ahorita pero esa funcion sort que decis si acepta un arreglo tenes que probar mandandole tu array bidimensional por filas algo asi como

sort(array[0]) y luego sort(array[1])

probalo y nos contas  :thumbsup:
Título: Re: Sort Array in Java [Help]
Publicado por: JGuillen™ en septiembre 17, 2008, 04:53:57 pm
mira no tengo java a la mano ahorita pero esa funcion sort que decis si acepta un arreglo tenes que probar mandandole tu array bidimensional por filas algo asi como

sort(array[0]) y luego sort(array[1])

probalo y nos contas  :thumbsup:

Mira lo acabo de hacer y el error q me da es este...

Exception in thread "main" java.lang.NullPointerException at Arreglos.main(Arreglos.java:142)


Camus de Acuario

Graxias tambien por tu ayuda.. fijate q lo intente pero neles da error.. ademas ese code es para Javascript segun vi en la web....  :big_boss:
Título: Re: Sort Array in Java [Help]
Publicado por: vlad en septiembre 17, 2008, 05:04:30 pm
Creo que esto te sirve: www.jguru.com (http://www.jguru.com/forums/view.jsp?EID=1279229)

Igual no tengo java a la mano.


Aqui esta explicado el QuickSort de Camus:
Código: [Seleccionar]
http://www.webxpertz.net/forums/showthread.php?t=11030
Título: Re: Sort Array in Java [Help]
Publicado por: motul en octubre 01, 2008, 04:32:23 pm
algo asi keria hace en una clase la semana pasada pero no pude voy a probar como lo dice el otro comuniter de arriba

pd.. siempre se encuentran cosas de utilidad aki!