快速排序
Posted jianxun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序相关的知识,希望对你有一定的参考价值。
快速排序(英语: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); // 合并左右数组 }
以上是关于快速排序的主要内容,如果未能解决你的问题,请参考以下文章