Foros del Web » Programando para Internet » Javascript »

sucesiones?? problema dificil...

Estas en el tema de sucesiones?? problema dificil... en el foro de Javascript en Foros del Web. He creado una function que desordena un array, esta derivada del metodo quickSort ya inventado, la he llamado quickDeSort: Código PHP: var  cont = 0 ...
  #1 (permalink)  
Antiguo 05/01/2004, 10:03
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
sucesiones?? problema dificil...

He creado una function que desordena un array, esta derivada del metodo quickSort ya inventado, la he llamado quickDeSort:

Código PHP:
var cont=0; var cambios=0;
function 
quickDeSort(objArray,ini,fin) { 
    var 
i=ini; var j=fin; var tmp;
    
cont++;
    do { 
        
tmp objArray[i];
        
objArray[i] = objArray[j];
        
objArray[j] = tmp
        
cambios++;
        if ( 
<= ) { i++; j--; }
    } while ( 
<= );
    if ( 
ini quickDeSort(objArray,ini,j);
    if ( 
fin quickDeSort(objArray,i,fin); 

Desordena un array "aleatoriamente" a nuestros ojos, aunque en realidad se basa en una serie de calculos, sin comparar un elemento con otro. cont guarda las veces que se ha ejecutado quickDeSort y cambios las veces que se han intercambiado dos elementos.

Bueno, yo queria saber, teniendo en principio un array (sabiendo entonces su length), cuantas veces se va a llamar la function quickDeSort y cuantos cambios se van a hacer, evidentemente, sin llamarla por primera vez. Es decir, anticiparme a los resultados de cont y cambios.

Esto es una chapucilla que he hecho para ver si lo sacaba, per o no lo he conseguido.

Código PHP:
arr=new Array(1,2);

var 
cont=0; var cambios=0;
function 
quickDeSort(objArray,ini,fin) { 
    var 
i=ini; var j=fin; var tmp;
    
cont++;
    do { 
        
tmp objArray[i];
        
objArray[i] = objArray[j];
        
objArray[j] = tmp
        
cambios++;
        if ( 
<= ) { i++; j--; }
    } while ( 
<= );
    if ( 
ini quickDeSort(objArray,ini,j);
    if ( 
fin quickDeSort(objArray,i,fin); 
}

function 
estudiarSuc() {
    
cont=0cambios=0;
    
arr.sort( new Function("x","y","return (x<y)?-1:(x>y)?1:0;") );        //ordenamos
    
arr[arr.length]=eval("Math.max("+arr+")+1");                        //añadimos un elemento que sea como el mayor+1
    
quickDeSort(arr,0,arr.length-1);                                    //desordenamos
    
document.write(arr.length+" elementos -> "+cont+" veces -> "+cambios+" cambios.<br>");
}

for(
a=0;a<200;a++) estudiarSuc(); 
estudiarSuc() lo unico que hace es agregar un elemento mas al array y llamar a quickDeSort(), para luego mostrar cont y cambios.


Pues eso, espero que quede claro, quiero saber el resultado de cont y cambios antes de llamar a la function sabiendo el length del array a tratar.

Echenme una mano quien sepa por favor .
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:55.