經常使用算法之快速排序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

相關文章
相關標籤/搜索