美文网首页
PHP快速排序算法

PHP快速排序算法

作者: MikeLue | 来源:发表于2019-05-12 17:37 被阅读0次

重要思想:
分而治之和递归思想

原理:
1: 选择一个基准值
2: 将数组分成两个子数组: 小于基准值的元素和大于基准值的元素
3: 利用递归对两个子数组进行快速排序
4: 合并三个数组

(注意:当子数组个数小于2时,终止递归直接返回子数组)

代码demo:

<?php
for ($i=0; $i < 100; $i++) { 
    $arr[] =  rand(1,1000);
}
print_r(quick_sort($arr));

/**
 * 快速排序
 * @param  array $arr 要排序的数组
 * @return array      排序后的数组
 */
function quick_sort($arr)
{
    $middle = $arr[0];// 获取基准值
    $count  = count($arr);// 元素个数
    $left   = $right = array();
    // 循环比较
    for ($i=1; $i < $count; $i++) { 
        if ($middle < $arr[$i]) {
            // 大于基准值
            $right[] = $arr[$i];
        } else {
            // 小于基准值
            $left[] = $arr[$i];
        }
    }
    // 元素个数大于二,进行递归
    $left = count($left) > 1 ? quick_sort($left) : $left;
    $right = count($right) > 1 ? quick_sort($right) : $right;
    // 合并排序后的数据
    return array_merge($left, array($middle), $right);
}

相关文章

  • 七大排序算法之快速排序

    七大排序算法之快速排序 @(算法笔记)[排序算法, 快速排序, C++实现] [TOC] 快速排序的介绍: 快速排...

  • 算法总结

    1.使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组 //冒泡排序(数组排序) function bubb...

  • PHP快速排序算法

    重要思想:分而治之和递归思想 原理:1: 选择一个基准值2: 将数组分成两个子数组: 小于基准值的元素和大于...

  • java实现快速排序、归并排序、希尔排序、基数排序算法...

    快速排序算法 归并排序算法 希尔排序算法 基数排序算法

  • PHP - 快速排序

    使用PHP代码实现快速排序算法 快速排序是十分常用的高效率的算法,其思想是:先选一个标尺,用它把整个队列过一遍筛选...

  • 排序算法

    冒泡排序 PHP OC 快速排序

  • 11、【排序】快速排序(1)

    1、概述 快速排序(Quick Sort)是一种高级排序算法。 快速排序算法相对来说比较复杂,因为快速排序算法所延...

  • web开发需要知道的几个算法

    算法分类 快速排序算法 深度优先算法 广度优先算法 堆排序算法 归并排序算法

  • PHP常用数组排序算法

    title: PHP常用数组排序算法tags: [PHP,数组,排序,算法] 这几天写到的代码中,用到了许多对数组...

  • PHP冒泡排序和快速排序

    php冒泡排序和快速排序算法,对需要排序的数组从后往前(逆序)多遍扫描,当发现相邻的两个数值的次序与排序要求的规则...

网友评论

      本文标题:PHP快速排序算法

      本文链接:https://www.haomeiwen.com/subject/lvocaqtx.html