经常使用算法之快速排序python&php

python(快速排序):
# -*- UTF-8 -*-
def quicksort(arr):
    if (len(arr)) < 2:
        return arr;php

    mark = arr[0] #递归条件
    #第一种方式
    # left = [i for i in arr[1:] if i < mark];
    # right = [i for i in arr[1:] if i > mark];python

    #第二种方式
    left = [];
    right = [];
    for i in arr:
        if (i < mark):
            left.append(i);
        if (i > mark):
            right.append(i);数组

    return quicksort(left) + [mark] + quicksort(right);app

print(quicksort([10,3,5,7]))ui

php(快速排序):
function quicksort($arr)
{
    $cnt = count($arr);
    if ($cnt < 2) {
        return $arr;
    }排序

    $mid = $arr[0]; //取第一个值做为递归条件
    $left = [];
    $right = [];
    for ($i=0; $i < $cnt; $i++) { 
        if ($arr[$i] > $mid) {
            $right[] = $arr[$i];
        }递归

        if ($arr[$i] < $mid) {
            $left[] = $arr[$i];
        }
    }io

    return array_merge(quicksort($left), [$mid], quicksort($right));
}
var_dump(quicksort([10,3,5,7]));function

快速排序思想:分而治之,随机选择一个基准值,而后把数组分区(左右两边),由于左右两边的的数组也是无需的,而后递归排序sort

相关文章
相关标签/搜索