php常用的数据结构算法

<?  
//--------------------  
// 基本数据结构算法 
//--------------------  
//二分查找(数组里查找某个元素)  

   $array = [1,3,6,9,13,1,63,65,69,70,71,73,75,76,77,79,89];

   $target = 73;//查找的数

   $low = 0;

   $high = count($array)-1;//数值长度

   function bin_search($array, $low, $high, $target){

    if ( $low <= $high){

      $mid = intval(($low+$high)/2 );

      if ($array[$mid] == $target){
       return $mid;

      }elseif ( $target < $array[$mid]){

        return bin_search($array, $low, $mid-1, $target);

      }else{

       return bin_search($array, $mid+ 1, $high, $target);

  }

 }

  return false;

}


$find = bin_search($array, $low, $high, $target);

var_dump($find);
//显示结果 12
//顺序查找(数组里查找某个元素) function seq_sch($array, $n, $k){ $array[$n] = $k; for($i=0; $i<$n; $i++){ if( $array[$i]==$k){ //找到相同的值就会终止循环 break; } } if($i<$n){ return $i; }else{ return -1; //没有匹配的数值 } }
$arr=[1,5,3,6,4,7,11,15,18];
$n =count($arr);
$k =6;
var_dump(seq_sch($arr,$n,$k));
结果: 3;

  

//线性表的删除(数组中实现)  
function delete_array_element($array , $i) 
{  
       $len =  count($array);  
       for ($j= $i; $j<$len; $j ++){ 
              $array[$j] = $array [$j+1];  //把需要删除的数的位置,开始,把后边的值覆盖到前面上来
       }  
       array_pop ($array); //清楚最后一个多余的字段 
       return $array ;  
} 
$arr =[1,5,7,11];
$i =1;
var_dump(delete_array_element($arr,$i));

集合:[1,7,11];
//冒泡排序(数组排序)  
function bubble_sort( $array) { 
  $count = count( $array);
  if ($count <= 0 ) 
   return false; 
  for($i=0 ; $i<$count; $i ++){//循环对比的轮数
     for($j=$count-1 ;$j>$i; $j--){ //当前轮相邻元素循环对比
        if($array[$j] < $array [$j-1]){ //如果前面的大于后面的
$tmp = $array[$j]; //交换
$array[$j] = $array[ $j-1];
$array[$j-1] = $tmp;
}
}
}
//逻辑: 选择一个参考数
return $array; }
$arr =[1,5,8,2,87,16];
var_dump(bubble_sort($arr));
$arr =[1,2,5,8,16,87];
//快速排序(数组排序)  
function quick_sort($array ) {  
       if (count($array) <= 1) return $array;  
       $key = $array [0];  
       $left_arr  = array(); 
       $right_arr = array();  
       for ($i= 1; $i<count($array );$i++){  
              if ($array[ $i]<= $key)  
                     $left_arr[] = $array[$i];  
              else  
                     $right_arr[] = $array[$i ]; 
       }  
       $left_arr = quick_sort($left_arr ); 
       $right_arr = quick_sort( $right_arr); 
       return array_merge($left_arr , array($key),$right_arr);  
} 
//快速排序(数组排序)  
function quick_sort($array ) {  
       if (count($array) <= 1) 
           return $array;  
       $key = $array [0];  //第一个值
       $left_arr  = array(); //左数组
       $right_arr = array(); //右数组
       for ($i= 1; $i<count($array );$i++){  
              if ($array[ $i]<= $key)  
                     $left_arr[] = $array[$i];  
              else  
                     $right_arr[] = $array[$i ]; 
       }  
       $left_arr = quick_sort($left_arr ); 
       $right_arr = quick_sort( $right_arr); 
       return array_merge($left_arr , array($key),$right_arr);  
}

$arr =[1,5,3,7,55,34];
var_dump(quick_sort($arr));
$arr =[1,3,5,7,34,55];
原文地址:https://www.cnblogs.com/kevin-yang123/p/14395830.html