php实现选择排序
选择排序算法原理
选择排序是一种简单直观的排序算法。基本思想是每次从未排序部分选择最小(或最大)元素,放到已排序部分的末尾,直到所有元素排序完成。时间复杂度为O(n²),适用于小规模数据排序。
PHP实现代码
function selectionSort(array $arr): array {
$len = count($arr);
for ($i = 0; $i < $len - 1; $i++) {
$minIndex = $i;
for ($j = $i + 1; $j < $len; $j++) {
if ($arr[$j] < $arr[$minIndex]) {
$minIndex = $j;
}
}
if ($minIndex != $i) {
// 交换元素
$temp = $arr[$i];
$arr[$i] = $arr[$minIndex];
$arr[$minIndex] = $temp;
}
}
return $arr;
}
// 使用示例
$unsortedArray = [64, 25, 12, 22, 11];
$sortedArray = selectionSort($unsortedArray);
print_r($sortedArray);
代码解析
外层循环控制排序轮数,内层循环查找未排序部分的最小值索引。找到最小值后与当前外层循环位置的元素交换。通过双重循环逐步将最小元素移动到数组前端。
算法优化方向
可以同时记录最小值和最大值,每次排序将最小值和最大值分别放到数组两端,减少排序轮数。但这种优化仍保持O(n²)时间复杂度。

注意事项
选择排序是不稳定排序算法(相同元素可能改变相对位置)。对于大规模数据排序效率较低,建议使用更高效的算法如快速排序或归并排序。






