PHP 选择排序 案例


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>选择排序</title>
</head>
<body>
<!-- 假设第一个元素为最大值max,其下标为max_index, 通过循环找出每一行的最大值,
和当前行的最后一个未排序的数组元素进行位置交接,
重复如上步骤。排序的结果为从小到大. -->
    <?php 
            $arr=array(10,30,20,50,40);
            $n=count($arr);
            //外层循环 
            for ($i=0; $i < $n-1; $i++) { 
                $max=$arr[0];
                $max_index=0;
            //内层循环查找没有排序的最大值和 其下标
                for ($j=0; $j < $n-$i; $j++) { 
                    if ($arr[$j]>$max) {
                        $max=$arr[$j];
                        $max_index=$j;
                    }
                }
                    
                //没有排序的最后一个索引为
                $last_index=$n-$i-1;
                //将最大值和 没有排序的值交换位置
                $tmp=$arr[$max_index];
                $arr[$max_index]=$arr[$last_index];
                $arr[$last_index]=$tmp;
            }

                echo "<pre>";
                print_r($arr);
                echo "</pre>";
                echo "<hr/>";
            

     ?>
    <!-- 总结:选择排序 两层循环 内层循环找最大值 外层循环 
将找到的最大值$arr[$max_index]和未排序的最后一个$arr[$last_index] 进行位置交换,
未排序的最后一个 $last_index=$n(数组长度)-$i(第几次循环)-1; -->
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值