中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP快速排序算法實現的原理是什么

發布時間:2020-10-15 17:24:38 來源:億速云 閱讀:149 作者:小新 欄目:編程語言

PHP快速排序算法實現的原理是什么?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!

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

步驟:

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

代碼實現

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, 8
after sort: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
use 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快速排序算法實現的原理是什么大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

湟源县| 和静县| 安阳市| 绥化市| 阜宁县| 防城港市| 万安县| 砀山县| 麦盖提县| 邓州市| 阜宁县| 五河县| 营口市| 海阳市| 安福县| 商南县| 青铜峡市| 哈尔滨市| 霍邱县| 遵义县| 清丰县| 桐乡市| 扎赉特旗| 汽车| 佛坪县| 普安县| 胶南市| 文安县| 汉源县| 吉安县| 丁青县| 铅山县| 沁水县| 自治县| 阿城市| 古浪县| 公安县| 巧家县| 伊金霍洛旗| 普安县| 且末县|