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

來源:互聯網
上載者:User
本篇文章給大家帶來的內容是關於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));
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.