pastebin

Paste Search Dynamic
Recent pastes
Insert Heep
  1. <?php
  2.  
  3. function Insert_Heep(&$a,$i ){
  4.         //親ノード
  5.         $j=intval(($i-1)/2);
  6.         if( $a[$i] > $a[$j] ){
  7.                 list($a[$i] ,$a[$j] ) = array($a[$j] , $a[$i] );
  8.                 if($j<>0){
  9.                         Insert_Heep($a,$j);
  10.                 }
  11.         }
  12. }
  13.  
  14. function Deletemin_Heep(&$a,$i,$max_num ){
  15.         if( $max_num == 1){return true;
  16.         $j=intval($i*2+1);
  17.         $k=intval($i*2+2);
  18.         $a[$k] = (isset($a[$k]))? $a[$k] : -1 ;
  19.         $a[$j] = (isset($a[$j]))? $a[$j] : -1 ;
  20.         if( $a[$k] == -1 and $a[$j] == -1 ){return true;}
  21.         $h = floor(log($max_num,2)) ;
  22.         $l = ( $a[$k] > $a[$j] )? $k : $j ;
  23.        
  24.         if( $a[$l] > $a[$i] ){
  25.                 list($a[$i] ,$a[$l] ) = array($a[$l] , $a[$i] );
  26.                
  27.                 if( floor(log($i+1,2))+1 < $h ){
  28.                         Deletemin_Heep($a,$l+1,$max_index);
  29.                 }
  30.                
  31.                
  32.         }
  33. }
  34.  
  35. function BSort(&$a,$a_num ){
  36.         for( $i=1 ; $i < $a_num ; ++$i ){
  37.                 Insert_Heep($a,$i);
  38.         }
  39.        
  40.        
  41.         for( $i=$a_num-1 ; 0 <= $i ; --$i ){
  42.                 $res[] = $a[0] ;
  43.                  $a[0] = $a[$i];
  44.                 $a[$i] = -1;
  45.                 Deletemin_Heep($a,0,$i);
  46.         }
  47.        
  48.         $a = array_reverse($res) ;
  49.        
  50. }
  51. $arr = [1,3,2,7,4,5,6] ;
  52. BSort($arr,7) ;
  53.         echo $arr[0] ;
  54.         echo $arr[1] ;
  55.         echo $arr[2] ;
  56.         echo $arr[3] ;
  57.         echo $arr[4] ;
  58.         echo $arr[5] ;
  59.         echo $arr[6] ;
  60. // your code goes here
Parsed in 0.053 seconds