国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 邏輯算法 > 正文

PHP快速排序算法實現的原理及代碼介紹

2020-03-22 17:54:00
字體:
來源:轉載
供稿:網友

本篇文章給大家帶來的內容是關于PHP快速排序算法實現的原理及代碼介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

算法原理

下列動圖來自五分鐘學算法,演示了快速排序算法的原理和步驟。

quick.gif

步驟:

從數組中選個基準值將數組中大于基準值的放同一邊、小于基準值的放另一邊,基準值位于中間位置遞歸的對分列兩邊的數組再排序

代碼實現

function quickSort($arr) $len = count($arr); if ($len = 1) { return $arr; $v = $arr[0]; $low = $up = array(); for ($i = 1; $i $len; ++$i) { if ($arr[$i] $v) { $up[] = $arr[$i]; } else { $low[] = $arr[$i]; $low = quickSort($low); $up = quickSort($up); return array_merge($low, array($v), $up);}

測試代碼:

$startTime = microtime(1);$arr = range(1, 10);shuffle($arr);echo before sort: , implode( , , $arr), /n $sortArr = quickSort($arr);echo after sort: , implode( , , $sortArr), /n echo use time: , microtime(1) - $startTime, s/n 

測試結果:

before sort: 1, 7, 10, 9, 6, 3, 2, 5, 4, 8after sort: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10use time: 0.0009009838104248s

時間復雜度

快速排序的時間復雜度在最壞情況下是O(N2),平均的時間復雜度是O(N*lgN)。

這句話很好理解:假設被排序的數列中有N個數。遍歷一次的時間復雜度是O(N),需要遍歷多少次呢?至少lg(N+1)次,最多N次。

1) 為什么最少是lg(N+1)次?快速排序是采用的分治法進行遍歷的,我們將它看作一棵二叉樹,它需要遍歷的次數就是二叉樹的深度,而根據完全二叉樹的定義,它的深度至少是lg(N+1)。因此,快速排序的遍歷次數最少是lg(N+1)次。

2) 為什么最多是N次?這個應該非常簡單,還是將快速排序看作一棵二叉樹,它的深度最大是N。因此,快讀排序的遍歷次數最多是N次。

【相關推薦:PHP視頻教程】

以上就是PHP快速排序算法實現的原理及代碼介紹的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大关县| 苍南县| 柳江县| 从化市| 新闻| 潼关县| 建水县| 上高县| 通江县| 灌阳县| 永福县| 民丰县| 保康县| 旌德县| 龙州县| 石楼县| 龙游县| 双辽市| 宁河县| 清苑县| 三穗县| 东至县| 松原市| 荔浦县| 岗巴县| 柳州市| 宜宾县| 二连浩特市| 孟村| 荔波县| 萨嘎县| 黑龙江省| 兴仁县| 玉屏| 栾川县| 竹山县| 古丈县| 临泉县| 望都县| 化隆| 沾益县|