Foros del Web » Programando para Internet » PHP »

Ordenamiento Burbuja

Estas en el tema de Ordenamiento Burbuja en el foro de PHP en Foros del Web. Hola buenos dias a ver quien me puede ayudar tengo la siguiente funcion de ordenamiento burbuja que me ayuda a ordenar mi arreglo multidimensional segun ...
  #1 (permalink)  
Antiguo 22/09/2009, 09:42
 
Fecha de Ingreso: febrero-2008
Mensajes: 133
Antigüedad: 16 años, 9 meses
Puntos: 0
Exclamación Ordenamiento Burbuja

Hola buenos dias a ver quien me puede ayudar tengo la siguiente funcion de ordenamiento burbuja que me ayuda a ordenar mi arreglo multidimensional segun el parametro que se le indique $k, pero como era de esperarse me ocurre que los datos que son vacíos me aparecen al principio y me gustaría que contrario a esto dichos daos aparezcan al final del ordenamiento intente cambiando el condicional y nada anexo la funcion a ver quien me ayuda gracias de antemano


Código PHP:
function burbuja($array,$k)
    {
    
$count count($array);
    if (
$count <= 0) return false;
    for(
$i=0$i<$count$i++){
        for(
$j=$count-1$j>$i$j=$j-1)
        {    
            if (
$array[$j][$k] < $array[$j-1][$k])
            {
                
$tmp $array[$j];
                
$array[$j] = $array[$j-1];
                
$array[$j-1] = $tmp;
            }
            
         }
     }
     
        return 
$array;
    } 
  #2 (permalink)  
Antiguo 22/09/2009, 10:54
 
Fecha de Ingreso: abril-2007
Mensajes: 114
Antigüedad: 17 años, 7 meses
Puntos: 2
Respuesta: Ordenamiento Burbuja

Tienes que cambiar ligeramente la condicional. Prueba de esta manera:

Código php:
Ver original
  1. function burbuja($array,$k)
  2.     {
  3.     $count = count($array);
  4.     if ($count <= 0) return false;
  5.     for($i=0; $i<$count; $i++){
  6.         for($j=$count-1; $j>$i; $j=$j-1)
  7.         {    
  8.             if ((($array[$j][$k] < $array[$j-1][$k]) && $array[$j][$k]!="") || ($array[$j-1][$k]!=""))
  9.             {
  10.                 $tmp = $array[$j];
  11.                 $array[$j] = $array[$j-1];
  12.                 $array[$j-1] = $tmp;
  13.             }
  14.            
  15.          }
  16.      }
  17.      
  18.         return $array;
  19.     }

No lo he probado, así que no estoy 100% seguro de que sea así. En cualquier caso, si no es así, es al revés :) Espero que te sriva, al menos como base.

Un saludo

Última edición por paloto; 22/09/2009 a las 10:59
  #3 (permalink)  
Antiguo 22/09/2009, 12:30
 
Fecha de Ingreso: febrero-2008
Mensajes: 133
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Ordenamiento Burbuja

Muchas gracias Paloto, pero eso de la condición adicional ya lo intenté y nada, de hecho no ordena nada de nada simplemente no se que pasa alli.
  #4 (permalink)  
Antiguo 23/09/2009, 01:16
 
Fecha de Ingreso: abril-2007
Mensajes: 114
Antigüedad: 17 años, 7 meses
Puntos: 2
Respuesta: Ordenamiento Burbuja

Ok. Perdona el fallo. Ayer no tenía mucho tiempo para probarlo. Este sí que funciona:

Código php:
Ver original
  1. function burbuja($array,$k)
  2.     {
  3.     $count = count($array);
  4.     if ($count <= 0) return false;
  5.     for($i=0; $i<$count; $i++){
  6.         for($j=$count-1; $j>$i; $j=$j-1)
  7.         {    
  8.             if ( ( ($array[$j][$k] < $array[$j-1][$k]) || (trim($array[$j-1][$k])=="") ) && trim($array[$j][$k])!="" )
  9.             {
  10.                 $tmp = $array[$j];
  11.                 $array[$j] = $array[$j-1];
  12.                 $array[$j-1] = $tmp;
  13.             }
  14.            
  15.          }
  16.      }
  17.      
  18.         return $array;
  19.     }

Un saludo
  #5 (permalink)  
Antiguo 08/10/2009, 13:59
 
Fecha de Ingreso: febrero-2008
Mensajes: 133
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Ordenamiento Burbuja

Funciona a la perfección de verdad muchas gracias y disulpa la tardanza pero estuve enfermo,

Saludos
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 21:12.