PHP几则算法实例 --摘抄

摘抄自网络,有更改。


<?php
    //冒泡算法
    function MP($array){
        $count = count($array);
        $flag = false;
        for($i=1;$i<$count;$i++){
            for($m=0;$m<$count - $i;$m++){
                if($array[$m] > $array[$m+1]){
                    $x = $array[$m];
                    $array[$m] = $array[$m+1];
                    $array[$m+1] = $x;
                    $flag=true;
                }
            }
            if(!$flag){
                break;
            }
            $flag = false;
        }
        foreach($array as $key => $value){
            echo $value.'&nbsp; ';
        }
    }
    //选择算法
    function XZ($array3){
        for ($i = 0;$i < count($array3) - 1;$i++){
     
           for ($j = $i + 1;$j < count($array3);$j++){
     
             if ($array3[$j] < $array3[$i]){
     
               $temp = $array3[$i];
     
               $array3[$i] = $array3[$j];
     
               $array3[$j] = $temp;
     
             }
     
           }
     
        }
     
        foreach ($array3 as $value){
     
           echo $value.'&nbsp; ';
     
        }
    }
    
    //插入算法
    function CR($array4){
        for ($i = 1;$i < count($array4);$i++){

            $insertVal = $array4[$i];
     
            $insertIndex = $i - 1;
     
            while ($insertIndex >=0 && $insertVal < $array4[$insertIndex]){
     
               $array4[$insertIndex + 1] = $array4[$insertIndex];
     
               $insertIndex--;
     
            }
     
            $array4[$insertIndex + 1] = $insertVal;
     
        }
     
        foreach ($array4 as $value){
     
           echo $value.'&nbsp; ';
     
        }
    }
    
    //快速算法
    function QS($arr){
       if (count($arr) < 1){
           return $arr;
       }
       $key = $arr[0];
       $left_arr = array();
       $right_arr = array();
       for($i=1; $i < count($arr); $i++){
           if($arr[$i] <= $key){
               $left_arr[] = $arr[$i];
           } else {
               $right_arr[] = $arr[$i];
           }
       }
       $left_arr = QS($left_arr);
       $right_arr = QS($right_arr);
       $new_array = array_merge($left_arr, array($key), $right_arr);
        foreach($new_array as $value){
            echo $value . "&nbsp; ";
        }
   }
    
        $array = array(11,-3,51,-7,9,100,2,-56,32,21);
        echo "冒泡\n";
        MP($array);
        echo "<br />";
        echo "选择\n";
        $array3 = array(11,-3,51,-7,9,100,2,-56,32,21);
        XZ($array3);
        echo "<br />";
        echo "插入\n";
        $array4 = array(11,-3,51,-7,9,100,2,-56,32,21);
        CR($array4);
        echo "<br />";
        echo "快速\n";
        $array5 = array(11,-3,51,-7,9,100,2,-56,32,21);
        QS($array5);

好了,就到此了。



2 评论

  1. Yani   •  

    受教,非常感谢!

发表评论

电子邮件地址不会被公开。 必填项已用*标注