php排序算法(冒泡排序,快速排序)


当然,我可以为你提供PHP中冒泡排序和快速排序的示例代码。以下是两种排序算法的简单实现:

### 冒泡排序(Bubble Sort)

冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。


function bubbleSort(&$arr) {
    $n = count($arr);
    for ($i = 0; $i < $n - 1; $i++) {
        for ($j = 0; $j < $n - $i - 1; $j++) {
            if ($arr[$j] > $arr[$j + 1]) {
                // 交换元素
                $temp = $arr[$j];
                $arr[$j] = $arr[$j + 1];
                $arr[$j + 1] = $temp;
            }
        }
    }
}

// 示例用法
$arr = [64, 34, 25, 12, 22, 11, 90];
bubbleSort($arr);
print_r($arr);

### 快速排序(Quick Sort)

快速排序使用分治法策略来把一个序列分为较小和较大的两个子序列,然后递归地排序两个子序列。


function quickSort(&$arr) {
    $length = count($arr);
    if ($length <= 1) {
        return $arr;
    }

    $pivot = $arr[0];
    $left = $right = array();

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

    // 递归排序左右子数组
    $left = quickSort($left);
    $right = quickSort($right);

    // 合并排序后的数组
    return array_merge($left, array($pivot), $right);
}

// 示例用法
$arr = [10, 7, 8, 9, 1, 5];
$sorted_arr = quickSort($arr);
print_r($sorted_arr);

这两个函数都可以直接在你的PHP环境中使用,它们分别实现了冒泡排序和快速排序算法。注意,快速排序在大多数情况下比冒泡排序要快得多,特别是在处理大数据集时。