He creado un hilo para que por favor me ayuden con un codigo que estoy programando, yo antes programaba en c++(cosas muy basicas) y estoy migrando al maravilloso mundo de Flash/AS3.
Necesito recorrer todos los Elementos que se encuentren en un Array Bidimensional y luego ordenarlos con el metodo de la burbuja, se que existe el motodo .sort ley sobre este metodo o funcion pero quiero lograrlo como he aprendido en c++ que es el metodo de la burbuja.
Aqui un ejemplo espero que les sirve a muchos.
Esto es una Array de una sola Dimension ( Creo ) no estoy muy segura, pero eso fue lo que ley, este ejemplo he ordenado los elementos de un Array de forma Descendente o ascendente solo hay que cambiar el
">" o "<" en el if de la comparación:
Código C++ :
var aux:Number = 0; var n:Array; n = [10,4,1,5,8,3,7,0,8,2,9,6,11,0,0,-1,12,-2,-3,-4]; trace("Original Array: " + n); trace("-----------------------------"); for (var i:Number = 0; i<n.length; i++) { for (var j:Number = 0; j<n.length; j++) { if (n[j]>n[j+1]) { aux = n[j]; n[j] = n[j+1]; n[j+1] = aux; } } } trace("-----------------------------"); trace("Array descendent: "); for (var k:Number = 0; k<n.length; k++) { trace(n[k]); } for (var l:Number = 0; l<n.length; l++) { for (var m:Number = 0; m<n.length; m++) { if (n[m]<n[m+1]) { aux = n[m]; n[m] = n[m+1]; n[m+1] = aux; } } } trace("-----------------------------"); trace("Array ordered ascending: "); for (var o:Number = 0; o<n.length; o++) { trace(n[o]); }
ahora lo quiero lograr con un array de 2 dimensiones aqui este mi code este no lo he podido lograr no entiendo como hacerlo por eso pido ayuda a los expertos.
Código C++ :
var n:Array; var aux:Number = 0; // Array n = [[2,1,3,4], [5,8,6,7], [8,9,0,-1]]; trace(" 0 1 2 3"); trace(" 0[x,x,x,x]"); trace(" 1[x,x,x,x]"); trace(" 2[x,x,x,x]"); trace("------------------------"); trace("-----Original Array-----"); for(var a:Number = 0; a<n.length; a++) { trace(" [" + n[a] + "]"); } trace("------------------------"); trace("Size array: " + n.length); trace("------------------------"); trace("Position of each element: "); trace("Position 0,0:" + " " + n[0][0]); trace("Position 0,1:" + " " + n[0][1]); trace("Position 0,2:" + " " + n[0][2]); trace("Position 0,3:" + " " + n[0][3]); trace("Position 1,0:" + " " + n[1][0]); trace("Position 1,1:" + " " + n[1][1]); trace("Position 1,2:" + " " + n[1][2]); trace("Position 1,3:" + " " + n[1][3]); trace("Position 2,0:" + " " + n[2][0]); trace("Position 2,1:" + " " + n[2][1]); trace("Position 2,2:" + " " + n[2][2]); trace("Position 2,3:" + " " + n[2][3]); trace("------------------------"); trace(" ---Ordered array--- "); for(var i:Number = 0; i<n.length; i++) { for(var j:Number = 0; j<n.length; j++) { for(var k:Number = 0; k<n.length; k++) { for(var l:Number = 0; l<n.length; l++) { if(n[i][j]>n[k][l]) { aux = n[i][j]; n[i][j] = n[j][l]; n[k][l] = aux; } } } } } for(var q:Number = 0; q<n.length; q++) { for(var w:Number = 0; w<n.length; w++) { trace(n[q][w]); } }
un chico en internet me dijo que usara 2 for y el el segundo for que colocara el inidice como muestro aqui:
Código C++ :
for(var i:Number = 0; i<n.length; i++) { for(var j:Number = 0; j<n[i].length; j++) { if (n[i][j]>n[i][j+1]) { // Burbuja aqui } } }
si se dan cuenta el 2do for tiene el array como indicie i "n[i].length"
no entiendo porque me planteo eso no logro de entender, en fin
necesito ayuda con este array por favor ayúdenme a solucionar este problema que tengo actualmente muchas gracias y disculpen por quitarles su tiempo