当前位置: 首页> 最新文章列表> PHP实现简单选择排序算法详解与示例代码

PHP实现简单选择排序算法详解与示例代码

gitbox 2025-07-21

什么是简单选择排序

简单选择排序是一种直观且常用的排序算法,能够有效处理各种数据。其核心思想是:每次从待排序的元素中选出最小值,并将其放置到已排序序列的末尾。具体过程为:第一次在整个数组中选出最小元素与第一个位置交换,第二次从剩余元素中选最小值与第二个位置交换,依此类推,直到所有元素排序完成。

算法步骤

首先获取数组长度n,然后进行n-1轮选择操作。每一轮选择从未排序部分找到最小值,并将其与当前轮起始位置元素交换,实现局部有序,最终完成整体排序。

算法演示

以下为PHP实现的简单选择排序示例代码,便于理解算法具体执行过程:

function selectionSort(&$arr)
{
    $len=count($arr);
    for($i=0;$i<$len-1;$i++)
    {
        $min=$i; // 假设当前元素为最小值位置
        for($j=$i+1;$j<$len;$j++) // 从后续元素中查找更小值
        {
            if($arr[$j]<$arr[$min])
            {
                $min=$j; // 更新最小值位置
            }
        }
        if($min!=$i) // 位置变化时交换元素
        {
            $temp=$arr[$min];
            $arr[$min]=$arr[$i];
            $arr[$i]=$temp;
        }
    }
}

算法分析

时间复杂度

简单选择排序需要进行n-1轮选择,每轮在剩余元素中找最小值,因此比较次数为约n²/2,移动次数依赖初始数据顺序。总的时间复杂度为O(n²)。尽管如此,当数据量较小或基本有序时,该算法仍具一定实用性。

空间复杂度

该算法仅使用了一个临时变量来辅助交换,空间开销极小,空间复杂度为O(1)。

算法稳定性

简单选择排序是不稳定的排序算法。相同元素在排序过程中可能因交换位置而改变相对顺序。例如序列5 8 5 2 9,第一轮将最小元素2与第一个元素5交换后,相同的5的位置顺序就被打乱。