jueves, 24 de octubre de 2013


Métodos de Ordenamiento codificados en PHP

 

El código realiza un Ordenamiento de datos numéricos haciendo uso del Método de la Burbuja:

 
 
 
 
 
 
 
 
 
 
 
<?php
 
    function burbuja($A,$n)
    {
        for($i=1;$i<$n;$i++)
        {
                for($j=0;$j<$n-$i;$j++)
                {
                        if($A[$j]>$A[$j+1])
                        {$k=$A[$j+1]; $A[$j+1]=$A[$j]; $A[$j]=$k;}
                }
        }
 
      return $A;
    }
 
    function main()
    {
 
        $VectorA=array(5,4,3,2,1);
 
        $VectorB=burbuja($VectorA,sizeof($VectorA));
 
        for($i=0;$i<sizeof($VectorB);$i++)
            echo $VectorB[$i]."\n";
 
    }
 
    main();
?>

 

El código realiza un Ordenamiento de datos numéricos haciendo uso del Método Shell:

<?php
 
    function ordenamientoShell($A,$n)
    {
        for($inc = 1 ; $inc<$n;$inc=$inc*3+1);
 
      while ($inc > 0)
      {
          for ($i=$inc; $i < $n; $i++)
          {
                $j = $i;
                $temp = $A[$i];
                while (($j >= $inc) && ($A[$j-$inc] > $temp))
                {
                    $A[$j] = $A[$j - $inc];
                    $j = $j - $inc;
                }
 
                $A[$j] = $temp;
          }
 
          $inc/= 2;
      }
 
          return $A;
    }
 
    function main()
    {
 
        $VectorA=array(5,4,3,2,1);
 
        $VectorB=ordenamientoShell($VectorA,sizeof($VectorA));
 
        for($i=0;$i<sizeof($VectorB);$i++)
            echo $VectorB[$i]."\n";
 
    }
 
    main();
?>

 

El código realiza un Ordenamiento de datos numéricos haciendo uso del Método Quicksort:

<?php
    function quicksort($A, $izq, $der )
    {
        $i = $izq;
        $j = $der;
        $x = $A[ ($izq + $der) /2 ];
    do{
        while( ($A[$i] < $x) && ($j <= $der) )
        {
            $i++;
        }
 
        while( ($x < $A[$j]) && ($j > $izq) )
        {
            $j--;
        }
 
        if( $i <= $j )
        {
            $aux = $A[$i]; $A[$i] = $A[$j]; $A[$j] = $aux;
            $i++;  $j--;
        }
 
    }while( $i <= $j );
 
    if( $izq < $j )
        quicksort( $A, $izq, $j );
    if( $i < $der )
        quicksort( $A, $i, $der );
 
        return $A;
    }
 
    function main()
    {
 
        $VectorA=array(5,4,3,2,1);
 
        $VectorB=quicksort($VectorA,0,sizeof($VectorA)-1);
 
        for($i=0;$i<sizeof($VectorB);$i++)
            echo $VectorB[$i]."\n";
 
    }
 
    main();
?>

 

El código realiza un Ordenamiento de datos numéricos haciendo uso del Método de Selección:

<?php
 
    function selectionsort($A,$n)
    {
        for ($i=0; $i<$n-1; $i++)
    {
              $min=$i;
              for($j=$i+1; $j<$n; $j++)
                    if($A[$min] > $A[$j])
                       $min=$j;
              $aux=$A[$min];
              $A[$min]=$A[$i];
              $A[$i]=$aux ;
        }
 
      return $A;
    }
 
    function main()
    {
 
        $VectorA=array(5,4,3,2,1);
 
        $VectorB=selectionsort($VectorA,sizeof($VectorA));
 
        for($i=0;$i<sizeof($VectorB);$i++)
            echo $VectorB[$i]."\n";
 
    }
 
    main();
?>

 

El código realiza un Ordenamiento de datos numéricos haciendo uso del Método de Inserción Directa:

<?php
 
    function insercionDirecta($A,$n)
    {
 
        for ($i = 1; $i < $n; $i++)
        {
                 $v = $A[$i];
                 $j = $i - 1;
                 while ($j >= 0 && $A[$j] > $v)
                 {
                          $A[$j + 1] = $A[$j];
                          $j--;
                 }
 
                 $A[$j + 1] = $v;
        }
 
        return $A;
    }
 
    function main()
    {
 
        $VectorA=array(5,4,3,2,1);
 
        $VectorB=insercionDirecta($VectorA,sizeof($VectorA));
 
        for($i=0;$i<sizeof($VectorB);$i++)
            echo $VectorB[$i]."\n";
 
    }
 
    main();
?>

 

El código realiza un Ordenamiento de datos numéricos haciendo uso del Método de Inserción Binaria:

<?php
 
    function insercionBinaria($A,$n)
    {
            for($i=1;$i<$n;$i++)
            {
                $aux = $A[$i];
                $izq=0;
                $der=$i-1;
 
                while($izq<=$der)
                {
                    $m=(($izq+$der)/2);
                    if ($aux<$A[$m])
                        $der=$m-1;
                    else
                        $izq=$m+1;
                }
                $j=$i-1;
 
                while($j>=$izq)
                {
                    $A[$j+1]=$A[$j];
                    $j=$j-1;
                }
                $A[$izq]=$aux;
            }
 
      return $A;
    }
 
    function main()
    {
 
        $VectorA=array(5,4,3,2,1);
 
        $VectorB=insercionBinaria($VectorA,sizeof($VectorA));
 
        for($i=0;$i<sizeof($VectorB);$i++)
            echo $VectorB[$i]."\n";
 
    }
 
    main();
?>

 

El código realiza un Ordenamiento de datos numéricos haciendo uso del Método Heapsort:

<?php
 
    function heapsort($A,$n)
    {
 
        for($k=$n-1;$k>=0;$k--)
        {
                for($i=1;$i<=$k;$i++)
                {
                        $item=$A[$i];
                        $j=$i/2;
                        while($j>0 && $A[$j]<$item)
                        {
                                $A[$i]=$A[$j];
                                $i=$j;
                                $j=$j/2;
                        }
                        $A[$i]=$item;
                }
                $temp=$A[0];
                $A[0]=$A[$k];
                $A[$k]=$temp;
        }
 
      return $A;
    }
 
    function main()
    {
 
        $VectorA=array(5,4,3,2,1);
 
        $VectorB=heapsort($VectorA,sizeof($VectorA));
 
        for($i=0;$i<sizeof($VectorB);$i++)
            echo $VectorB[$i]."\n";
 
    }
 
    main();
?>