乐趣区

非开发编码集结

日常,练手,没查过是否最优解。
有更优解的朋友,欢迎留言怼我,感谢。

Days 2

:给定一个乱序的、纯数字的、值不重复的数组,请用递归,将其排序。
输入 [12, 42, 5, 23, 65]
输出 [5, 12, 23, 42, 65]

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

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
退出移动版