排序算法

常見的冒泡,選擇排序,快速排序,插入排序......

自己閒着沒事寫了一些,感覺代碼還不錯:

【總結:只要有思路,就會事半功倍】

    //排序1,支持升、降序
    function sort($arr = [], $type=true){
        $arr = $arr?$arr:[12,33,454,6,78,22,777,4,5,66,6];
        $tmp = [];
        foreach($arr as $key => $val){
            $max = $type?0:999999999;
            $index = 0;
            foreach($arr as $k => $v){
                if(true === $type){
                    if($v > $max){
                        $max = $v;
                        $index = $k;
                    }
                }else{
                    if($v < $max){
                        $max = $v;
                        $index = $k;
                    }
                }
            }
            array_push($tmp, $max);
            unset($arr[$index]);
        }
        return $tmp;
    }

    //排序2 - 遞歸
    function recurseSort(&$arr, &$tmp_arr, $type = true){
        $max = $type ? 0 : 9999999;
        $index = 0;
        foreach ($arr as $key => $val){
            if(true === $type){
                if($val > $max){
                    $max = $val;
                    $index = $key;
                }
            }else{
                if($val < $max){
                    $max = $val;
                    $index = $key;
                }
            }
        }
        array_push($tmp_arr, $max);
        unset($arr[$index]);
        if(!empty($arr)) $this->recurseSort($arr,$tmp_arr, $type);
    }

    //調用 true:降序,false:升序
    $arr = [22,3,4,5,212,66,3,5,99,44,77];
    $tmp = [];
    $this->recurseSort($arr, $tmp, false);//true:降序,false:升序
    var_dump($tmp);die;
    //$tmp = $this->sort($arr, false);
    //var_dump($tmp);die;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章