• 四种常见排序算法----php代码实现


    <?php 
    // 冒泡排序
    function bubble($value=[]){
        $length = count($value)-1; 
        for($j = 0;$j<$length;$j++){
            for($i = 0;$i<$length;$i++){
                if($value[$i+1]<$value[$i]){
                    $tmp = $value[$i+1];
                    $value[$i+1] = $value[$i];
                    $value[$i] = $tmp;
                }
            }
        }
        return $value;
    }
    $arr = array(5,2,10,22,1,10,9,6,4,55);
    var_dump(bubble($arr));
    echo "<br/>";
    
    //快速排序
    function quick($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 = quick($left_array);
        $right_array = quick($right_array);
        return array_merge($left_array,array($base_num),$right_array);
    }
    $arr = array(5,2,10,22,1,10,9,6,4,55);
    var_dump(quick($arr));
    echo "<br/>";
    
    //选择排序
    function select($arr){
        for($i = 0,$len = count($arr);$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(5,2,10,22,1,10,9,6,4,55);
    var_dump(quick($arr));
    echo "<br/>";
    
    //插入排序
    function insert($arr){
        for($i=1,$len = count($arr);$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(5,2,10,22,1,10,9,6,4,55);
    var_dump(quick($arr));
    echo "<br/>";
  • 相关阅读:
    linux学习笔记
    随笔
    matlab自学笔记(3)—图像绘制与图像处理
    matlab自学笔记(1)安装与简介
    matlab自学笔记(2)函数的使用
    四轴飞行器
    小学生300道练习题程序及问题
    对运动软件——乐动力的评价
    软件工程随记
    Visual Studio 2013版本安装
  • 原文地址:https://www.cnblogs.com/zgx123/p/7826991.html
Copyright © 2020-2023  润新知