php快速排序法

快速排序是一种常用的排序算法,也是最快的排序算法之一。其基本思想是通过一趟排序将待排序的数据分割成两部分,其中一部分的所有数据都比另一部分的所有数据小,然后再对这两部分分别进行快速排序,递归地重复这个过程,直到整个序列有序。

php快速排序法_第1张图片 

function quickSort($arr) {
    $length = count($arr);
    if ($length <= 1) {
        return $arr;
    }
    $pivot = $arr[0];
    $left = $right = [];
    for ($i = 1; $i < $length; $i++) {
        if ($arr[$i] < $pivot) {
            $left[] = $arr[$i];
        } else {
            $right[] = $arr[$i];
        }
    }
    return array_merge(quickSort($left), array($pivot), quickSort($right));
}
// 示例用法
$testArr = [8, 3, 1, 6, 4, 7, 2, 5];
$sortedArr = quickSort($testArr);
print_r($sortedArr);
  1. 选择一个基准元素,通常选择序列的第一个元素作为基准元素。
  2. 设定两个指针 left 和 right,分别指向序列的首部和尾部。
  3. 从 right 向 left 扫描,找到第一个小于基准元素的值,将其与基准元素交换。此时,基准元素左侧的元素都小于等于基准元素。
  4. 从 left 向 right 扫描,找到第一个大于基准元素的值,将其与基准元素交换。此时,基准元素右侧的元素都大于基准元素。
  5. 当 left 和 right 相遇时,将基准元素与相遇点交换。
  6. 分别对基准元素左侧和右侧的子序列进行快速排序,递归地重复上述步骤。

你可能感兴趣的:(乱七八糟,php,数据结构,开发语言,php,笔记,后端)