Advertisement
rgman

Inserción Binaria

Jun 29th, 2015
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.12 KB | None | 0 0
  1. <?php
  2.  
  3. function insercionBinaria( array &$arreglo, $item ) {
  4.     if ( empty ( $arreglo ) ) {
  5.         $arreglo[] = $item;
  6.         return $arreglo;
  7.     }
  8.    
  9.     $i = 0; $j = count($arreglo) - 1;
  10.    
  11.     while ( $i <= $j ) {
  12.         $mid = floor( ( $i + $j ) / 2 );
  13.         if ( $arreglo[$mid] <= $item ) {
  14.             $i = $mid + 1;
  15.         } else {
  16.             $j = $mid - 1;
  17.         }
  18.     }
  19.    
  20.     array_splice( $arreglo, $i, 0, array( $item ) );
  21.     return $arreglo;
  22. }
  23.  
  24. class OrdenamientoBinarioTest extends PHPUnit_Framework_TestCase {
  25.  
  26.     /**
  27.      * @dataProvider getInsercionData
  28.      */
  29.     public function testInsercionBinaria($arreglo, $item, $resultado)
  30.     {
  31.         $this->assertEquals( $resultado, insercionBinaria( $arreglo, $item ) );
  32.     }
  33.  
  34.     public function getInsercionData() {
  35.         return array(
  36.             array( array(), 1, array(1) ),
  37.             array( array(1, 3), 2, array(1, 2, 3) ),
  38.             array( array(5), 4, array(4, 5) ),
  39.             array( array(2, 6, 8), 7, array(2, 6, 7, 8) ),
  40.             array( array(2, 6, 8), 9, array(2, 6, 8, 9) ),
  41.         );
  42.     }    
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement