php 冒泡排序

<?php
//方法一
function getSortArr($array){
    $count = count($array);
    for($i=0;$i<$count-1;$i++){
//从前向后
        for($j=0;$j<$count-1-$i;$j++){
            $temp = '';
            if($array[$j]>$array[$j+1]){ //如果是从大到小的话,只要在这里的判断改成if($array[$j]<$array[$j+1])就可以了
                $temp = $array[$j];
                $array[$j] = $array[$j+1];
                $array[$j+1] = $temp;
            }
        }
    }
    return $array;
}
//方法二
function getSortArr2($array){
    $count = count($array);
    for ($i=0; $i < $count-1; $i++) {
//从后向前
        for($j=$count-1; $j>$i; $j--){
            $temp = '';
            if($array[$j]<$array[$j-1]){
                $temp = $array[$j];
                $array[$j] = $array[$j-1];
                $array[$j-1] = $temp;
            }
        }
    }
    return $array;
}
//优化后
function getSortArr3($array){
    $count = count($array);
    if($count <= 1){
        return $array;
    }
    $flag = false;
    for($i=0;$i<$count-1;$i++){
        for($j=0;$j<$count-1-$i;$j++){
            $temp = '';
            if($array[$j]>$array[$j+1]){
                $temp = $array[$j];
                $array[$j] = $array[$j+1];
                $array[$j+1] = $temp;
                $flag = true;
            }
        }
        if(!$flag){ //如果if($array[$j]>$array[$j+1])没有执行,则$flag为false
            $flag = false;
            break; //直接跳出本次循环
        }
    }
    return $array;
}
$arr = [3,24,55,223,76,22,11,89,2,4,5,28,11];
$sortArr = getSortArr3($arr);
print_r($sortArr);
?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值