Ver Mensaje Individual
  #169 (permalink)  
Antiguo 04/01/2004, 18:26
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 18 años, 3 meses
Puntos: 45
171.- Desordenar array logicamente aunque parezca ilogico

P: ¿Como puedo desordenar un array dos veces "aleatoriamente" y que el resultado sea el mismo?

R: He ideado un metodo a partir del conocido quickSort, sin evaluar si un elemento es menor que otro o demas, simplemente los cambia sean como sean:

Código PHP:
function desorden(arr) {    //solo para desordenar mucho
    
for(a=1;a<=arr.length-1;a++) quickDeSort(arr,0,a);
    for(
a=0;a<arr.length-1;a++) quickDeSort(arr,a,arr.length-1);
}
function 
quickDeSort(objArray,ini,fin) { 
    var 
i=ini; var j=fin; var tmp;
    do { 
        
tmp objArray[i];
        
objArray[i] = objArray[j];
        
objArray[j] = tmp
        if ( 
<= ) { i++; j--; }
    } while ( 
<= );
    if ( 
ini quickDeSort(objArray,ini,j);
    if ( 
fin quickDeSort(objArray,i,fin); 

Es curioso que si llamamos a quickDeSort con los mismos atributos dos veces (lo he probado solo con 0 y objArray.length-1), el array queda intacto. Por muchas veces que hagais reload, el desorden quedara igual y parecera aleatorio. La function desorden solo sirve para desordenar muchas veces, y darle mas realismo.

Espero que les sirva.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.

Última edición por derkenuke; 04/01/2004 a las 18:32