国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP排序算法之快速排序

CoderDock / 2101人閱讀

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

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

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

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

實(shí)現(xiàn)代碼:

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

// 判斷參數(shù)是否是一個(gè)數(shù)組
if(!is_array($arr)) return false;
// 遞歸出口:數(shù)組長(zhǎng)度為1,直接返回?cái)?shù)組
$length = count($arr);
if($length <= 1) return $arr;
// 數(shù)組元素有多個(gè),則定義兩個(gè)數(shù)組
$left = $right = [];
// 循環(huán)遍歷數(shù)組,把第一個(gè)元素當(dāng)做比較的對(duì)象
for($i=1;$i<$length;$i++)
{
    //判斷當(dāng)前元素的大小
    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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/29228.html

相關(guān)文章

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

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

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

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

    jayzou 評(píng)論0 收藏0
  • PHP面試四:邏輯與算法

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

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

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

    raoyi 評(píng)論0 收藏0
  • 求非負(fù)元素?cái)?shù)組所有元素能組合的最大字符串

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

    xiongzenghui 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<