Foros del Web » Programando para Internet » PHP »

problema en burbuja

Estas en el tema de problema en burbuja en el foro de PHP en Foros del Web. Hola tengo problemas con este ciclo burbuja el tema es que necesito obtener el mayor de todos , y si existen dos pues que me ...
  #1 (permalink)  
Antiguo 07/10/2008, 13:48
Avatar de mahia  
Fecha de Ingreso: enero-2008
Ubicación: La Tierra
Mensajes: 69
Antigüedad: 16 años, 9 meses
Puntos: 0
problema en burbuja

Hola tengo problemas con este ciclo burbuja el tema es que necesito obtener el mayor de todos , y si existen dos pues que me los muestren. por ejemplo cantidad_por_mes[1.5.4.6.5.2] aqui quiero que me muestre (5,5)..
aqui le sdejo el codigo .. si alguien descubre el error bueno pues gracias ...


<?php
if($_POST['radiobutton'] == "mayor_mes")
{

$ya=mysql_query("SELECT count(`id_servicio`) AS cuenta, mes from datos where
`id_servicio`='6' GROUP BY `mes`");

$cantidadPorMes = array();
$mes = array();
$valorMax = 0;
$i = 0;

while($row = mysql_fetch_object($ya))
{
$cantidadPorMes[] = $row->cuenta;
$mes[] = $row->mes;

}

//burbuja
for($i=0; $i<count($cantidadPorMes)-1; $i++)
{
for($j=i+1; $j<count($cantidadPorMes); $j++)
{
if($cantidadPorMes[$i]>$cantidadPorMes[$j])
{$valorMax=$cantidadPorMes[$i]; $elem=$i;}
else
{$valorMax=$cantidadPorMes[$j]; $elem=$j;}
}
}
$k=0;
for($i=0; $i<count($cantidadPorMes); $i++)
{
if($cantidadPorMes[$i]==$valorMax && $i!=$elem)
{
$mayores[$k]=$i;
$k++;
}

}
echo "EL mes de mayor valor es: ". $mes[array_search($valorMax, $cantidadPorMes)];
exit();



}

?>
  #2 (permalink)  
Antiguo 07/10/2008, 13:52
Avatar de TolerantX  
Fecha de Ingreso: marzo-2006
Ubicación: Guadalajara, México.
Mensajes: 408
Antigüedad: 18 años, 8 meses
Puntos: 10
Respuesta: problema en burbuja

Y si usas MAX de MySQL? :)
__________________
TolerantX
http://tolerantx.com
Linux User #385226
  #3 (permalink)  
Antiguo 07/10/2008, 13:56
Avatar de mahia  
Fecha de Ingreso: enero-2008
Ubicación: La Tierra
Mensajes: 69
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: problema en burbuja

si bueno yo se que esa funcion m egenera el maximo y devuelve los resultados sin problemas pero es que yo queria ver dentro del burbuja donde estaba el error,
igual muchisimas gracias TolerantX
  #4 (permalink)  
Antiguo 07/10/2008, 14:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: problema en burbuja

El problema es en si todo tu algoritmo, debes de ir guardando en un arreglo todos los máximos, y con el algoritmo que usas no estas comparando ni haciendo eso.

Saludos.
  #5 (permalink)  
Antiguo 07/10/2008, 16:27
 
Fecha de Ingreso: septiembre-2008
Mensajes: 32
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: problema en burbuja

Encontré este ejemplo tal vez te sirva para entender el metodo de ordenamiento Burbuja.

Código:
<?php
function form(){
    echo "<form action=\"".$_SERVER["PHP_SELF"]." \"name=\"form\" method=\"post\">";
    echo "<p>Por favor indica el número de digitos que ingresarás</p>";
    echo "<input type=\"text\" size=\"2\" maxlenght=\"2\" name=\"digitos\" />";
    echo "<input type=\"submit\" name=\"submit\" value=\"Aceptar\" /></form>";    
}

if(isset($_POST["enviar"])){
for($i=0;$i<$_POST["digitos"];$i++){
    for($a=0;$a<$_POST["digitos"];$a++){
        if($valores[$a]>$valores[$a+1]){
            $tmp=$valores[$a+1];
            $valores[$a+1]=$valores[$a];
            $valores[$a]=$tmp;
        }
    }
}
for($i=0;$i<=$_POST["digitos"];$i++){
    echo $valores[$i]."<br />";
}

}
if(isset($_POST["submit"])){
    echo "<form action=\"".$_SERVER["PHP_SELF"]." \"name=\"form\" method=\"post\">";
    echo "<p>Por favor llena el arreglo con valores numéricos</p>\n";
    echo "<table>\n<tr><td>\n";
    for($i=1;$i<=$digitos;$i++){
        echo "<input type=\"text\" size=\"2\" maxlenght=\"2\" name=\"valores[]\" />\n";    
        if(($i%10)==0){
            echo "</td></tr>\n";
            echo "<tr><td>";
        }
    }
    echo "<input type=\"submit\" name=\"enviar\" value=\"Enviar\" />\n";
    echo "<input type=\"hidden\" name=\"digitos\" value=\"".$_POST["digitos"]."\" />";
    echo "</td></tr></table>\n";
    echo "</form>";        
}
else{
    form();
}
?>
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 22:45.