zoukankan      html  css  js  c++  java
  • 快速排序

    1.快速排序:

    时间复杂度:O(nlogn)
    
    空间复杂度:
    

    2.Php代码如下:

    <?php
        $arr = [1, 3, 5, 2, 56, 2, 367, 33, 14];
        $b = quick($arr);
        print_r($b);
    
        function quick($arr)
        {
            $left = [];
            $right = [];
            $count = count($arr);
            if ($count <= 1) return $arr;
            for ($i = 1; $i < $count; $i++) {
                if ($arr[$i] > $arr[0]) {
                    array_push($right, $arr[$i]);
                } else {
                    array_push($left, $arr[$i]);
                }
            }
    
            $l = quick($left);
            $r = quick($right);
            return array_merge($l, array($arr[0]), $r);
        }
    

    快排分析:

    快排可以分成两部分,第一部分: 把数据二分的过程,运算次数是logn, 第二部分是二分得到的每个部分都要循环一次(把大于选择的中间值的数,放右边,反之则放左边),这个时间复杂度是n, 所以时间复杂度是 n*logn, 快排是不稳定的,因为,在二分的时候,每次选择的中间值不确定,最坏的情况也就是每次都选择到那个最小的,这样二分的次数就变成n了,这样总体时间复杂度是: n^2
    

  • 相关阅读:
    2016-02-24 工作日记
    金字塔培训
    你找到自己的路了么?
    你是个成熟的职场人么?
    码农十年总结
    码农十年连载六
    码农十年连载五
    码农十年连载四
    码农十年连载三
    码农十年连载二
  • 原文地址:https://www.cnblogs.com/wangweiwen/p/6107387.html
Copyright © 2011-2022 走看看