成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP排序算法之快速排序

CoderDock / 2103人閱讀

摘要:實現(xiàn)代碼判斷參數(shù)是否是一個數(shù)組遞歸出口數(shù)組長度為,直接返回數(shù)組數(shù)組元素有多個,則定義兩個數(shù)組循環(huán)遍歷數(shù)組,把第一個元素當做比較的對象判斷當前元素的大小遞歸調(diào)用將所有的結(jié)果合并

原理:找到當前數(shù)組中的任意一個元素(一般選擇第一個元素),作為標準,新建兩個空數(shù)組left、rignt,遍歷整個數(shù)組元素,如果遍歷到的元素比當前的元素小就放到數(shù)組left,比當前的元素大放到rignt,然后再對新數(shù)組進行同樣的操作。

遞歸:
遞歸是一種函數(shù)調(diào)用自身的機制。
遞歸必須要有邊界條件,也就是遞歸出口(退出遞歸)
遞歸前進段和遞歸返回段,也就是最后得到的值
當邊界條件不滿足時,遞歸前進;當邊界條件(遞歸出口)滿足是,遞歸返回。
PHP的遞歸非常消耗性能,盡量避免使用。

快速排序的原理復(fù)合遞歸原理
遞歸點:如果數(shù)組元素大于1,就需要再進行分解,所以我們的遞歸點就是新構(gòu)造的數(shù)組元素個數(shù)大于1
遞歸出口:當數(shù)組元素個數(shù)為1,不需再對新數(shù)組進行排序。

實現(xiàn)代碼:

$arr = [34,56,7,89,12,9];
function quick_sort($arr)
{

// 判斷參數(shù)是否是一個數(shù)組
if(!is_array($arr)) return false;
// 遞歸出口:數(shù)組長度為1,直接返回數(shù)組
$length = count($arr);
if($length <= 1) return $arr;
// 數(shù)組元素有多個,則定義兩個數(shù)組
$left = $right = [];
// 循環(huán)遍歷數(shù)組,把第一個元素當做比較的對象
for($i=1;$i<$length;$i++)
{
    //判斷當前元素的大小
    if($arr[$i] < $arr[0])
    {
        $left[] = $arr[$i];
    }
    else
    {
        $right[] = $arr[$i];
    }
}
// 遞歸調(diào)用
$left = quick_sort($left);
$right = quick_sort($right);
// 將所有的結(jié)果合并
return array_merge($left,[$arr[0]],$right);

}
print_r(quick_sort($arr));

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/29228.html

相關(guān)文章

  • PHP算法四大基礎(chǔ)算法

    摘要:而在證明算法是正確的基礎(chǔ)上,第二步就是分析算法的時間復(fù)雜度。算法的時間復(fù)雜度反映了程序執(zhí)行時間隨輸入規(guī)模增長而增長的量級,在很大程度上能很好反映出算法的優(yōu)劣與否。 showImg(https://segmentfault.com/img/remote/1460000016451712?w=800&h=341); 前言 雖然工作中,你覺得自己并沒有涉及到算法這方面的東西,但是算法是程序的...

    isLishude 評論0 收藏0
  • 利用PHP實現(xiàn)常用的數(shù)據(jù)結(jié)構(gòu)排序(小白系列文章七)

    摘要:排序嚴格來說不算數(shù)據(jù)結(jié)構(gòu),更應(yīng)該歸于算法一類,因為數(shù)據(jù)結(jié)構(gòu)指的是數(shù)據(jù)與數(shù)據(jù)之間的關(guān)系,排序參與其中,更多的是讓數(shù)據(jù)狀態(tài)發(fā)生了改變。 排序嚴格來說不算數(shù)據(jù)結(jié)構(gòu),更應(yīng)該歸于算法一類,因為數(shù)據(jù)結(jié)構(gòu)指的是數(shù)據(jù)與數(shù)據(jù)之間的關(guān)系,排序參與其中,更多的是讓數(shù)據(jù)狀態(tài)發(fā)生了改變。于是,我們開始用PHP來聊聊算法。 引子 其實有一句話說的是不錯的,不必重復(fù)造輪子,所以下面我將引用別人的文章作為本文的引文,...

    jayzou 評論0 收藏0
  • PHP面試四:邏輯與算法

    摘要:數(shù)據(jù)結(jié)構(gòu)常見數(shù)據(jù)結(jié)構(gòu)數(shù)組是最簡單而且應(yīng)用最廣泛的數(shù)據(jù)結(jié)構(gòu)特征使用連續(xù)內(nèi)存空間來存儲存放相同類型或著衍生類型的元素數(shù)組比較特別,可以存放八種數(shù)據(jù)類型通過下標來訪問集合特征保存不重復(fù)的元素字典特征就是關(guān)聯(lián)數(shù)組,以形式存儲棧,與隊列相似特征存儲數(shù) 數(shù)據(jù)結(jié)構(gòu) 常見數(shù)據(jù)結(jié)構(gòu) Array 數(shù)組是 最簡單 而且 應(yīng)用最廣泛 的數(shù)據(jù)結(jié)構(gòu) 特征: 1、使用連續(xù)內(nèi)存空間來存儲 2、存放相同類型或著衍生類型...

    smartlion 評論0 收藏0
  • PHP基礎(chǔ)算法快速排序

    摘要:快速排序法判斷參數(shù)是否是一個數(shù)組遞歸出口數(shù)組長度為,直接返回數(shù)組數(shù)組元素有多個則定義兩個空數(shù)組使用循環(huán)進行遍歷,把第一個元素當做比較的對象判斷當前元素的大小遞歸調(diào)用將所有的結(jié)果合并

    raoyi 評論0 收藏0
  • 求非負元素數(shù)組所有元素能組合的最大字符串

    摘要:尋找非零元素數(shù)組中所有元素排列組合后的最大值待排序數(shù)組排序方法參數(shù)校驗排序算法快速排序冒泡排序拼接用例測試這里只對快速排序方法使用組測試用例并列舉如下。 首發(fā)于 樊浩柏科學院 問題敘述:將一個非負元素數(shù)組中的所有元素排列組合在一起,找出值最大的那個排列情況。例如 [0, 9, 523, 94, 10, 4],排列組合后值最大數(shù)為:9945234100。 showImg(https:/...

    xiongzenghui 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<