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
    

  • 相关阅读:
    ios获取iphone手机设备型号
    iOS项目中所有icon的尺寸以及命名
    c++达内视频
    ffmpeg教程
    FFMPEG SDK 教程
    minicom 下载
    线程同步的几种方法的总结
    多线程笔试面试概念问答
    buntu Rhythmbox解决中文乱码
    菜鸟学习ios
  • 原文地址:https://www.cnblogs.com/wangweiwen/p/6107387.html
Copyright © 2011-2022 走看看