php快速排序算法

介紹:經過設置一個初始中間值,來將須要排序的數組分紅3部分,小於中間值的左邊,中間值,大於中間值的右邊,繼續遞歸用相同的方式來排序左邊和右邊,最後合併數組php

代碼以下:數組

<?php

$a = array(2,13,42,34,56,23,67,365,87665,54,68,3);

function quick_sort($a)
{
// 判斷是否須要運行,因下面已拿出一箇中間值,這裏<=1
if (count($a) <= 1) {
    return $a;
}

$middle = $a[0]; // 中間值

$left = array(); // 接收小於中間值
$right = array();// 接收大於中間值

// 循環比較
for ($i=1; $i < count($a); $i++) { 

    if ($middle < $a[$i]) {

        // 大於中間值
        $right[] = $a[$i];
    } else {

        // 小於中間值
        $left[] = $a[$i];
    }
}

// 遞歸排序劃分好的2邊
$left = quick_sort($left);
$right = quick_sort($right);

// 合併排序後的數據,別忘了合併中間值
return array_merge($left, array($middle), $right);
}

print_r(quick_sort($a));
//結果
//Array ( [0] => 2 [1] => 3 [2] => 13 [3] => 23 [4] => 34 [5] => 42 [6] => 54 [7] => 56 [8] => 67 [9] => 68 [10] => 365 [11] => 87665 )
相關文章
相關標籤/搜索