• php排序之快速排序


    关于快速排序的介绍 请看百度百科讲解的很详细 

    http://baike.baidu.com/link?url=1VOpp4qjdwKma81MFPozjvyPy2rYJos6ZmfP5Ady3xjEP8b3Vzn0WivTtDQ23sGHjUWAu0oAMp3R5jTlOx-7NWmmd3XSkKERxGF8w8WZqoAynrgogfYw8tTnBysKheKavH0qxlCcE6IguFIU5-TXafslTBGhcwD7CSVKqktAfjW6qPnChnc3OCr1-13edJbT

    拿出一个作为标尺将大数组分两堆 然后递归式的从子堆中继续拿标尺分堆 直到分不了为止说明有序 动态图如下:

    具体PHP代码如下:

    <?php
    function my_quick_sort($array)
    {
        $size=count($array);//得到数组总长度
        if($size>1)
        {
            $first=$array[0];//拿出第一个作为标尺
            $front=array();//前面的数组 存比标尺小的数
            $back=array();//后面的数组 存比标尺大的数
            for ($i=1; $i < $size; $i++) 
            { 
                if($array[$i]<=$first)
                {
                    $front[]=$array[$i];//如果小于等于标尺 就放入前面的数组
                }else
                {
                    $back[]=$array[$i];//如果大于标尺 就放入后面的数组
                }
            }
            $front=my_quick_sort($front);//递归的对前面一半数组排序
            $back=my_quick_sort($back);//递归的对后面一半数组排序
            return array_merge($front,array($first),$back);//合并开始前面 中间 后面
        }else
        {
            return $array;//如果数组只有一个长度 没必要排序 直接返回
        }
    }
    ?>

    调用代码如下:

    <?php
    $array=array(10,9,8,7,6,5,4,3,2,1);
    $result=my_quick_sort($array);
    var_dump($result);
    ?>

    结果如下:

  • 相关阅读:
    后端架构师技术图谱
    互联网经典技术架构
    软件开发知识体系(二)
    软件开发知识体系(一)
    HSF源码剖析
    分库分表的几种常见形式以及可能遇到的难题
    iOS 关于MVC和MVVM设计模式的那些事
    MVC与MVP简单对比
    MVC、MVP、MVVM 模式
    Learning Android ActionBar
  • 原文地址:https://www.cnblogs.com/lizhaoyao/p/5924329.html
Copyright © 2020-2023  润新知