码迷,mamicode.com
首页 > 编程语言 > 详细

快速排序

时间:2019-04-12 19:25:49      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:比较   span   str   quicksort   strong   pre   array   UNC   exchange   

快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),简称快排,一种排序算法,最早由东尼·霍尔提出
在平均状况下,排序 n 个项目要 O(n log n) 次比较。在最坏状况下则需要 O(n2) 次比较,但这种状况并不常见。
事实上,快速排序 O(n log n) 通常明显比其他算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地达成。
 
思路分析:选择一个基准元素,通常选择第一个元素或者最后一个元素。通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素。此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。
// 排序排序
function quick_sort($arr)
{
    if (count($arr) < 1) {
        return $arr;
    }

    $middle = $arr[0]; // 中间值,作为参照
    $left = [];
    $right = [];

    for ($i = 1; $i < count($arr); $i++) {
        if ($middle < $arr[$i]) {
            $right[] = $arr[$i];
        } else {
            $left[] = $arr[$i];
        }
    }

    // 递归获取
    $left = quick_sort($left);
    $right = quick_sort($right);

    return array_merge($left, [$middle], $right); // 合并左右数组
}

 

快速排序

标签:比较   span   str   quicksort   strong   pre   array   UNC   exchange   

原文地址:https://www.cnblogs.com/jianxun/p/10697733.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!