php实现快速排序法函数代码


当然,以下是一个使用PHP实现的快速排序算法的函数示例。快速排序是一种高效的排序算法,采用分治法的策略来把一个序列分为较小和较大的两个子序列,然后递归地排序两个子序列。


<?php

function quickSort(&$arr, $left = 0, $right = null) {
    if ($right === null) {
        $right = count($arr) - 1;
    }
    
    if ($left < $right) {
        // 分区操作,返回分区基准的索引
        $pivotIndex = partition($arr, $left, $right);
        
        // 递归地对基准左侧的子数组进行快速排序
        quickSort($arr, $left, $pivotIndex - 1);
        
        // 递归地对基准右侧的子数组进行快速排序
        quickSort($arr, $pivotIndex + 1, $right);
    }
    
    return $arr;
}

function partition(&$arr, $left, $right) {
    // 选择最右边的元素作为基准
    $pivot = $arr[$right];
    
    // 初始化索引
    $i = $left - 1;
    
    for ($j = $left; $j < $right; $j++) {
        // 如果当前元素小于或等于基准
        if ($arr[$j] <= $pivot) {
            $i++;
            
            // 交换元素
            list($arr[$i], $arr[$j]) = array($arr[$j], $arr[$i]);
        }
    }
    
    // 将基准元素放到正确的位置
    list($arr[$i + 1], $arr[$right]) = array($arr[$right], $arr[$i + 1]);
    
    // 返回基准的索引
    return $i + 1;
}

// 示例使用
$arr = array(10, 7, 8, 9, 1, 5);
quickSort($arr);
print_r($arr);

?>

这段代码定义了两个函数:`quickSort` 和 `partition`。`quickSort` 是快速排序的主函数,它接收一个数组和两个可选参数(左边界和右边界),用于递归地对数组进行排序。`partition` 函数负责将数组分为两部分,并返回基准的索引。最后,通过一个示例展示了如何使用这个快速排序函数。