首頁  >  文章  >  後端開發  >  PHP如何實現快速排序?

PHP如何實現快速排序?

藏色散人
藏色散人原創
2019-03-04 10:19:539392瀏覽

快速排序是一種比較排序,這意味著它可以對任何類型的元素進行排序。快速排序可以說是冒泡排序的改進。

PHP如何實現快速排序?

快速排序實作想法的示意圖如下:

PHP如何實現快速排序?

註:水平線是樞軸值

快速排序演算法程式碼如下:

<?php
function quick_sort($my_array)
{
    $loe = $gt = array();
    if(count($my_array) < 2)
    {
        return $my_array;
    }
    $pivot_key = key($my_array);
    $pivot = array_shift($my_array);
    foreach($my_array as $val)
    {
        if($val <= $pivot)
        {
            $loe[] = $val;
        }elseif ($val > $pivot)
        {
            $gt[] = $val;
        }
    }
    return array_merge(quick_sort($loe),array($pivot_key=>$pivot),quick_sort($gt));
}

$my_array = array(3, 0, 2, 5, -1, 4, 1);
echo &#39;原始数组 : &#39;.implode(&#39;,&#39;,$my_array).&#39;\n&#39;;
$my_array = quick_sort($my_array);
echo &#39;排序后数组 : &#39;.implode(&#39;,&#39;,$my_array);

輸出:

原始数组:3,0,2,5,-1,4,1                             
排序后数组:-1,0,1,2,3,4,5

相關函數介紹:

##array_shift( )函數將陣列開頭的單元移出陣列;

array_shift ( array &$array ) : mixed

array_shift() 將 array 的第一個單元移出並作為結果返回,將 array 的長度減一並將所有其它單元向前移動一位。所有的數字鍵名將改為從零開始計數,文字鍵名將不變。

array_merge()函數合併一個或多個陣列;

array_merge ( array $array1 [, array $... ] ) : array

array_merge() 將一個或多個陣列的單元合併起來,一個陣列中的值附加在前一個陣列的後面。傳回作為結果的數組。

這篇文章就是關於PHP快速排序演算法的介紹,希望對需要的朋友有幫助!


以上是PHP如何實現快速排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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