PHP 选择排序法

这是今天学习的第二个算法,比冒泡更优秀一点的算法,叫做选择排序法,他的时间复杂度也是O(n2),别看他和冒泡的复杂度是一样的,但还是有点逻辑方面还是有点差别:选择排序进行的交换操作很少,最多会发生 N - 1次交换.

 function selection_sort($array){
            $count=count($array);
            for($i=0;$i<$count-1;$i++){
                $min=$i;
                for($j=$i+1;$j<$count;$j++){
                    if($array[$min]>$array[$j]){
                        $min=$j;
                    }
                }
                if($min!=$i){
                    $temp=$array[$min];
                    $array[$min]=$array[$i];
                    $array[$i]=$temp;
                }
                echo '<pre>';
                echo '第'.($i+1)."次排序的结果";
                var_dump($array);
                echo '<br>';
            }
            return$array;
        }
        $old_array=array(20, 40, 60, 80, 30, 70, 90, 10, 50, 0);
        selection_sort($old_array);

上面是算法的代码,数值还是一样的,但是算法逻辑改变了,结果当然也是一样的。

最后还是来句总结该算法的结语:循环个数总数,将该循环键的值与后面所有的对比,将后面最小值的位置与循环键的值位置进行交换,最小的永远会在最前面排着

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值