PHP中的四大算法


图 | 自制

文 | 挨踢小子

——此文仅代表个人学习所得,欢迎阅览

如有侵权,请私信删除



冒泡排序
$arr=array(22,43,4,63,21,66,22,38,36,76,49);
function bubbleSort($arr)
{
   
$len=count($arr);
   for($i=1;$i<$len;$i++)
   {
       
for($k=0;$k<$len-$i;$k++)
       {
           
if($arr[$k]>$arr[$k+1])
           {
               
$tmp=$arr[$k+1];
               $arr[$k+1]=$arr[$k];
               $arr[$k]=$tmp;
           }
       }
   }
   
return $arr;
}




选择排序
$arr=array(22,43,4,63,21,66,22,38,36,76,49);
  function selectSort($arr) {
   
$len=count($arr);
   for($i=0; $i<$len-1; $i++) {
       
$p = $i;
       //假定第一个是最小值的位置
       
for($j=$i+1; $j<$len; $j++) {
           
if($arr[$p] > $arr[$j]) {
               
$p = $j;
               //判断找出最小值的位置。
           
}
       }
       
if($p != $i) {
           
$tmp = $arr[$p];
           $arr[$p] = $arr[$i];
           $arr[$i] = $tmp;
       }
   }
   
return $arr;
}


插入排序
$arr=array(22,43,4,62,21,66,22,78,36,76,39);
function insertSort($arr) {
   
$len=count($arr);
   for($i=1; $i<$len; $i++) {
       
$tmp = $arr[$i];
       for($j=$i-1;$j>=0;$j--) {
           
if($tmp < $arr[$j]) {
               
$arr[$j+1] = $arr[$j];
               $arr[$j] = $tmp;
           } else {
               
break;
           }
       }
   }
   
return $arr;
}


快速排序
$arr=array(22,43,4,63,21,66,22,38,36,76,49);
function quickSort($arr)
{
   
//判断数组是否适合排序
   
$length = count($arr);
   if ($length <= 1) {
       
return $arr;
   }
   
//选择第一个元素作为基准
   
$base_num = $arr[0];
   //遍历除了标尺外的所有元素,
    //按照大小关系放入两个数组内
  //初始化两个数组
   
$left_array = array();  
   //小于基准的
   
$right_array = array();  
   //大于基准的
   
for ($i = 1; $i < $length; $i++) {
       
if ($base_num > $arr[$i]) {
           
//放入左边数组
           
$left_array[] = $arr[$i];
       } else {
           
//放入右边数组
           
$right_array[] = $arr[$i];
       }
   }
   
//再分别对左边和右边的数组进行相同的
  //序处理方式递归调用这个函数
   
$left_array =  quickSort($left_array);
   $right_array =  quickSort($right_array);
  //然后合并数组

return array_merge($left_array,array($base_num),$right_array);
}



●作者简介:挨踢小子,现在就读于某某大学,一个一无所有,努力拼搏不负青春的小子,喜欢文字,爱好读书。公众号:  挨踢小子(LN-aitixiaozi )。

猜你喜欢

转载自blog.csdn.net/qq_37126357/article/details/78005826