PHP實現快速排序

快速排序屬於交換排序,是一種不穩定排序,平均時間複雜度爲
O(nlog2^n),最好狀況時間複雜度爲O(nlog2^n),最壞狀況時間複雜度爲O(n^2)php

<?php
function quickSort($array)
    {
        //判斷參數是不是一個數組
        if (!is_array($array)) return false;
        //遞歸出口:數組長度爲1,直接返回數組
        $length = count($array);
        if ($length <= 1) return $array;
        //數組元素有多個,則定義兩個空數組
        $left = $right = [];
        //使用for循環進行遍歷,把第一個元素當作比較的對象
        for ($i = 1; $i < $length; $i++)
        {
            //判斷當前元素的大小
            if ($array[$i] < $array[0]){
                $left[] = $array[$i];
            } else {
                $right[] = $array[$i];
            }
        }
        //遞歸調用
        $left = quickSort($left);
        $right = quickSort($right);
        //將全部的結果合併
        return array_merge($left, [$array[0]], $right);
    }

    $array = [1, 3, 5, 18, 9, 2, 4, 6, 5, 0, 10, 29, 15];
    print_r(quickSort($array));

個人博客即將搬運同步至騰訊雲+社區,邀請你們一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=2pegbhfy77y80數組

相關文章
相關標籤/搜索