Ver Mensaje Individual
  #2 (permalink)  
Antiguo 22/08/2005, 08:51
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 3 meses
Puntos: 45
Pues nada, la solución la saque metiendo un poco mas de tiempo...

Código PHP:
var a1=[1,3,-1,8,-1,2,5,9,3]; 
var 
a2=[2,-1,6,2,4,5,-1,2,-1]; 
function 
desorden_aleat(a,b) { 
    if(
a<b) return -1
    else if(
a>b) return 1
    else return 
0


function 
guardarMenosUno(arr) {
    var 
dev=new Array();
    for(var 
a=0a<arr.lengtha++) {
        if(
arr[a]==-1) {
            
dev[dev.length]=[aarr[a]];
            
//alert("Hay un -1 en "+a);
        
}
    }
    return 
dev;
}
function 
eliminarMenosUno(arr) {
    for(var 
a=0a<arr.lengtha++) {
        if(
arr[a]==-1) {
            
arr.splice(a,1);
            
a--;
        }    
    }
}
function 
restaurarMenosUno(arrarrMenosUno) {
    for(var 
a=0;a<arrMenosUno.length;a++) {
        
//alert("Añadimos "+arrMenosUno[a][1]+" en "+arrMenosUno[a][0]);
        
arr.splice(arrMenosUno[a][0],0,arrMenosUno[a][1]);
    }
}

function 
ordenar(arr) {
    var 
arr_menosUno=guardarMenosUno(arr);
    
eliminarMenosUno(arr);
    
arr.sort(desorden_aleat); 
    
restaurarMenosUno(arrarr_menosUno);
}

document.write(a1+"<br>"); 
ordenar(a1);
document.write(a1+"<br><br>"); 


document.write(a2+"<br>"); 
ordenar(a2);
document.write(a2); 
Se trata de guardar en un array bidimensional los elementos que queremos omitir. En el indice [0] guardo el indice original, y en el [1] guardo el valor. Luego los elimino del array a ordenar, lo ordeno, y restauro los elementos omitidos en el indice en el que estaban.

Mucho mas engorroso de lo que pensaba que se podría hacer en un principio.

Si teneis alguna sugerencia, plasmarla aqui
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.