Sv Community El Salvador
Soporte y Tecnología => Programación => Java => Mensaje iniciado 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:
-
por si tienes un array con esta estructura:
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:
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:
1,Adam
2,Sammy
2,Steve
3,Alice
3,Kevin
las funciones serian algo asi
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
-
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 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:
-
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:
http://www.webxpertz.net/forums/showthread.php?t=11030
-
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!