摘要:實現代碼判斷參數是否是一個數組遞歸出口數組長度為,直接返回數組數組元素有多個,則定義兩個數組循環遍歷數組,把第一個元素當做比較的對象判斷當前元素的大小遞歸調用將所有的結果合并
原理:找到當前數組中的任意一個元素(一般選擇第一個元素),作為標準,新建兩個空數組left、rignt,遍歷整個數組元素,如果遍歷到的元素比當前的元素小就放到數組left,比當前的元素大放到rignt,然后再對新數組進行同樣的操作。
遞歸:
遞歸是一種函數調用自身的機制。
遞歸必須要有邊界條件,也就是遞歸出口(退出遞歸)
遞歸前進段和遞歸返回段,也就是最后得到的值
當邊界條件不滿足時,遞歸前進;當邊界條件(遞歸出口)滿足是,遞歸返回。
PHP的遞歸非常消耗性能,盡量避免使用。
快速排序的原理復合遞歸原理
遞歸點:如果數組元素大于1,就需要再進行分解,所以我們的遞歸點就是新構造的數組元素個數大于1
遞歸出口:當數組元素個數為1,不需再對新數組進行排序。
實現代碼:
$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));
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29228.html
摘要:而在證明算法是正確的基礎上,第二步就是分析算法的時間復雜度。算法的時間復雜度反映了程序執行時間隨輸入規模增長而增長的量級,在很大程度上能很好反映出算法的優劣與否。 showImg(https://segmentfault.com/img/remote/1460000016451712?w=800&h=341); 前言 雖然工作中,你覺得自己并沒有涉及到算法這方面的東西,但是算法是程序的...
摘要:排序嚴格來說不算數據結構,更應該歸于算法一類,因為數據結構指的是數據與數據之間的關系,排序參與其中,更多的是讓數據狀態發生了改變。 排序嚴格來說不算數據結構,更應該歸于算法一類,因為數據結構指的是數據與數據之間的關系,排序參與其中,更多的是讓數據狀態發生了改變。于是,我們開始用PHP來聊聊算法。 引子 其實有一句話說的是不錯的,不必重復造輪子,所以下面我將引用別人的文章作為本文的引文,...
摘要:數據結構常見數據結構數組是最簡單而且應用最廣泛的數據結構特征使用連續內存空間來存儲存放相同類型或著衍生類型的元素數組比較特別,可以存放八種數據類型通過下標來訪問集合特征保存不重復的元素字典特征就是關聯數組,以形式存儲棧,與隊列相似特征存儲數 數據結構 常見數據結構 Array 數組是 最簡單 而且 應用最廣泛 的數據結構 特征: 1、使用連續內存空間來存儲 2、存放相同類型或著衍生類型...
摘要:快速排序法判斷參數是否是一個數組遞歸出口數組長度為,直接返回數組數組元素有多個則定義兩個空數組使用循環進行遍歷,把第一個元素當做比較的對象判斷當前元素的大小遞歸調用將所有的結果合并
摘要:尋找非零元素數組中所有元素排列組合后的最大值待排序數組排序方法參數校驗排序算法快速排序冒泡排序拼接用例測試這里只對快速排序方法使用組測試用例并列舉如下。 首發于 樊浩柏科學院 問題敘述:將一個非負元素數組中的所有元素排列組合在一起,找出值最大的那個排列情況。例如 [0, 9, 523, 94, 10, 4],排列組合后值最大數為:9945234100。 showImg(https:/...
閱讀 591·2021-11-15 11:38
閱讀 1174·2021-10-11 10:59
閱讀 3491·2021-09-07 09:58
閱讀 479·2019-08-30 15:44
閱讀 3518·2019-08-28 18:14
閱讀 2599·2019-08-26 13:32
閱讀 3514·2019-08-26 12:23
閱讀 2413·2019-08-26 10:59