Ver Mensaje Individual
  #7 (permalink)  
Antiguo 06/10/2013, 17:13
Profesor_Lambetain
 
Fecha de Ingreso: septiembre-2010
Mensajes: 67
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Algoritmo para ordenar matriz sin usar método .SORT, pero con problema.

El código casero (sin usar método sort) queda así:

Código HTML:
<?xml version="1.0" encoding="UTF-8"?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
	http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd>

<html xmlns=http://w3.org/1999/xhtml xml:lang="en">
<head>
<script type="text/javascript">
function arbol(){
	var p1=new Array("10001","2","10121952","3");
	var p2=new Array("10002","5","15121955","6");
	var p3=new Array("10003","8","23081947","9");
	var perhermanos=new Array(p1,p2,p3);
	var s=3;
	var perhermanosbis=new Array();
	var fechamasantigua;
	var fechaactual;
	var chapuza;
	var mayor=0;
	for(j=0;j<=s-1;j++){
		fechamasantigua="9999999999";
		for(i=0;i<=perhermanos.length-1-j;i++){ /* observar el juego de índices, ya que matriz perhermanos es de longitud 
							variable (se reduce en un vector a cada ciclo de for(j)). */
			fechaactual=perhermanos[i][2].substr(4,4)+perhermanos[i][2].substr(2,2)+perhermanos[i][2].substr(0,2)+perhermanos[i][0].substr(3,2);
			if(fechaactual<fechamasantigua){
				fechamasantigua=fechaactual;
				mayor=i;
			}else{
				continue;
			}
		} // Fin for(i).
		chapuza=perhermanos[mayor]; // se carga variable temporal chapuza con el vector de fecha más antigua de perhermanos.
		perhermanosbis[j]=chapuza; // se agrega a perhermanosbis el vector anterior.
		perhermanos.splice(mayor,1); // se elimina el vector de fecha más antigua de perhermanos.
alert("Matriz perhermanos: \n"+perhermanos+"\n\nMatriz perhermanosbis: \n"+perhermanosbis);
	} // Fin for(j).
} // Fin function arbol.
</script>
</head>

<body style="background-color:#FFFFFF" onLoad="javascript:arbol();">
Esto es una prueba...
</body>
</html> 

Se puede comprobar con el alert, a cada ciclo de for externo, cómo va reduciéndose la longitud de la matriz original (perhermanos) y cómo va creciendo la matriz ordenada (perhermanosbis).

Obviamente, y como bien dijo zerokilled arriba, el uso de sort es más racional... y elegante. Al respecto, un pensamiento:

[Off topic]Reinventar la rueda no tiene nada de malo, más bien veo cosas buenas en ello. Cuando le preguntas a un niño actual de dónde viene la leche, muchos responden "del Carrefour"... la Humanidad está olvidando cómo se usa el cerebro, esa maravilla, producto de eones de evolución, que surgió después de muchos intentos de prueba y error (esto es: a base de mutación y muerte) sin que ninguna inteligencia se lo haya propuesto. La mayoría de humanos perecería si se los abandonara en la selva, en el desierto o en el monte... porque ya ni saben hacer fuego ni cazar ni pescar. Y nos hemos sumido en una época en la que el uso del cerebro será primordial para poder sobrevivir a esta sinrazón a que nos han llevado gobiernos, élites y regímenes capitalistas y de los otros. Yo alterno mis ejercicios de lógica (programar) con el cultivo de mi huerta: el placer que causa un programa bien hecho es equivalente a la obtención de una minúscula cosecha de tomates. La lucha no debe ser contra los otros sino contra uno mismo: ¿por qué no voy a considerar un logro mío el haber corrido los 100 metros en 18 segundos, si yo nunca di esa marca? ¿Qué sentido tiene compararme con un negro o con un jamaicano... por qué no con una chita o una hormiga? El secreto es superarse uno a sí mismo, no superar a los demás.[/off]