当前位置:首页 > 叨叨念念 > PHP选择排序算法

PHP选择排序算法

叨叨念念 / 星之宇 / 2021-11-18 18:46 / 浏览:713 / 评论:0

PHP选择排序(Selection sort)算法是一种简单直观的排序算法。

选择排序的工作原理:首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。以此类推,直到所有元素均排序完毕。


比如:这个数组array(4,3,5,1,2)用冒泡排序算法进行升序排列。

第1个循环循环开始,当前排序:4,3,5,1,2

第1趟:假设第1个数是最小值,和后面的第2个数对比,因为第2个数小,所以变为第2个数

第2趟:得到的最小值和后面的第3个数对比,因为第3个数大,所以最小值还是第2个数

第3趟:得到的最小值和后面的第4个数对比,因为第4个数小,所以变为第4个数

第4趟:得到的最小值和后面的第5个数对比,因为第5个数大,所以最小值还是第4个数

然后判断得到数是不是假设的数,不是的话交换最小值和假设第1个数的值,得到1,3,5,4,2

第2个循环循环开始,当前排序:3,5,4,2

第1趟:假设第1个数是最小值,和后面的第2个数对比,因为第2个数大,所以最小值还是第1个数

第2趟:得到的最小值和后面的第3个数对比,因为第3个数大,所以最小值还是第1个数

第3趟:得到的最小值和后面的第4个数对比,因为第4个数小,所以变为第4个数

然后判断得到数是不是假设的数,不是的话交换最小值和假设第1个数的值,得到1,2,5,4,3

第3个循环循环开始,当前排序:5,4,3

第1趟:假设第1个数是最小值,和后面的第2个数对比,因为第2个数小,所以变为第2个数

第2趟:得到的最小值和后面的第3个数对比,因为第3个数小,所以变为第3个数

然后判断得到数是不是假设的数,不是的话交换最小值和假设第1个数的值,得到1,2,3,4,5

第4个循环循环开始,当前排序:4,5

第1趟:假设第1个数是最小值,和后面的第2个数对比,因为第2个数大,所以最小值还是第1个数

然后判断得到数是不是假设的数,不是的话交换最小值和假设第1个数的值,得到1,2,3,4,5

至此排序已经完成。


PHP选择算法代码:

$a=array(4,3,5,1,2);//这里随便创建一个一维数组; 
$n=count($a);//算出数组的元素总个数;
for($i=0;$i<$n-1;$i++){//需要进行的循环次数 
    $p = $i;//先假设最小的值的位置
    for ($j=$i+1;$j<$n;$j++) {
        $p = $a[$p] <= $a[$j] ? $p : $j;//获取最小值的位置
    }
    if ($p != $i) {    // 交换最小值和当前假设最小值的位置
        $tmp = $a[$p];
        $a[$p] = $a[$i];
        $a[$i] = $tmp;
    }
}
print_r($a);

目前有 0 条评论

    • 昵称
    • 邮箱
    • 网址