非開發編碼集結

平常,練手,沒查過是否最優解。
有更優解的朋友,歡迎留言懟我,感謝。

Days 2

:給定一個亂序的、純數字的、值不重複的數組,請用遞歸,將其排序。
輸入[12, 42, 5, 23, 65]
輸出[5, 12, 23, 42, 65]
php

function quick_sort($array)
{
    if (count($array) > 1) {
        $array_left = [];
        $array_right = [];
        $base = array_pop($array);

        foreach ($array as $item) {
            if ($base < $item) {
                array_push($array_left, $item);
            } else {
                array_push($array_right, $item);
            }
        }
        $array_left = quick_sort($array_left);
        $array_right = quick_sort($array_right);

        return array_merge($array_left, [$base], $array_right);
    }

    return $array;
}

$array = [2, 6, 12, 3, 1, 9];
print_r(quick_sort($array));  /* Result is Array
(
    [0] => 12
    [1] => 9
    [2] => 6
    [3] => 3
    [4] => 2
    [5] => 1
).
*/

Days 1

:給定一個數字數組,請用遞歸,將其內部的值相加。
輸入[2, 4, 6]
輸出12
數組

function sum($array)
{
    if (count($array) > 1) {
        return array_pop($array) + sum($array);
    }
    return $array[0];
}

echo sum([2, 6, 3, 1, 9]);  // Result is 21.

:給定數組與上題相同,請用遞歸,統計其內部值的個數。
輸入[2, 4, 6]
輸出3
ui

function array_count($array)
{
    $count = 0;
    if ($array !== []) {
        array_pop($array);
        return ++$count + array_count($array);
    }
    return $count;
}

echo array_count([2, 6, 10, 3, 1, 9]);  // Result is 6
相關文章
相關標籤/搜索