首頁 >後端開發 >php教程 >php排序演算法:php快速排序的演算法原理與演算法實現

php排序演算法:php快速排序的演算法原理與演算法實現

不言
不言原創
2018-08-14 16:15:531969瀏覽

這篇文章帶給大家的內容是關於php排序演算法:php快速排序的演算法原理及演算法實現,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

php快速排序演算法原理:找到目前數組中的任一個元素(一般選擇第一個元素),作為標準,新建兩個空數組left、rignt,遍歷整個數組元素,如果遍歷到的元素比目前的元素小就放到數組left,比目前的元素大放異彩到rignt,然後再對新數組進行同樣的操作。

遞迴:
遞迴是一種函式呼叫自身的機制。
遞迴必須要有邊界條件,也就是遞迴出口(退出遞迴)
遞歸前進段和遞歸返回段,也就是最後得到的值
當邊界條件不滿足時,遞歸前進;當邊界條件(遞歸出口)滿足是,遞歸返回。
PHP的遞歸非常消耗效能,盡量避免使用。

php快速排序的原理複合遞歸原理
遞歸點:如果陣列元素大於1,就需要再進行分解,所以我們的遞歸點就是新建構的陣列元素數量大於1
遞歸出口:當陣列元素個數為1,不需再對新數組進行排序。

php快速排序法實作程式碼:

$arr = [34,56,7,89,12,9];
function quick_sort($arr)
{
// 判断参数是否是一个数组
if(!is_array($arr)) return false;
// 递归出口:数组长度为1,直接返回数组
$length = count($arr);
if($length <= 1) return $arr;
// 数组元素有多个,则定义两个数组
$left = $right = [];
// 循环遍历数组,把第一个元素当做比较的对象
for($i=1;$i<$length;$i++)
{
    //判断当前元素的大小
    if($arr[$i] < $arr[0])
    {
        $left[] = $arr[$i];
    }
    else
    {
        $right[] = $arr[$i];
    }
}
// 递归调用
$left = quick_sort($left);
$right = quick_sort($right);
// 将所有的结果合并
return array_merge($left,[$arr[0]],$right);
}
print_r(quick_sort($arr));

相關建議:

#php 冒泡排序 快速排序,php冒泡排序

#php 冒泡排序快速排序,php冒泡排序_PHP教學

#

以上是php排序演算法:php快速排序的演算法原理與演算法實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn