Ver Mensaje Individual
  #5 (permalink)  
Antiguo 06/01/2014, 11:04
DoHITB
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años
Puntos: 33
Respuesta: Mayor rendimento en tratamiento de arrays

Cita:
Iniciado por IsaBelM Ver Mensaje
tu consulta no tiene respuesta. contrapones dos códigos sin relación alguna. por un lado evalúas dos valores y por otro reordenas una matriz

en el primero de los casos, el uso de eval() no es que esté desaconsejado, como puedes leer en la gran cantidad de literatura que hay en la web sobre esta función, sino que no es necesario. para evaluar dos valores


buscándole tres pies al gato
Entiendo que en principio no se vea la relación entre los códigos... quizá obvié demasiado código.

Dejo el algoritmo que pretendo evaluar:

Código:
Array toSort; //array a ordenar, suponemos tiene datos (numéricos)
i = 0;
j = 0;
n = longitud(toSort);

de i=0 hasta n de 1 en 1
  max = i

  de j = i+1 hasta n de 1 en 1
    si array(j) >= array(max)
        max = j
    fin
  sigue

  intercambia(array(i), array(max))
sigue
Esto ordenaría de mayor a menor (descendente). No obstante se podría querer ordenar es ascendente, por lo que se podría añadir un parámetro tal que:

Código:
orden = '>=';

si ascendente
    orden = '<=';
fin
y luego evalular (eval()) la condición para obtener el orden deseado.

La contrapostura sería:

Código:
ordena

si ascendente
    cambia_orden(array);
fin
Espero que ahora se vea más clara la contraposición de los dos códigos.

Saludos y gracias por contestar.