冒泡排序(PHP实现)

<?php
$arr = [5,2,55,7,1,15,25];//定义数组
sort_buddle0($arr);//将数组排序
function sort_buddle0(&$arr){//传址排序
    $len = count($arr);//计算数组长度
    for($i=0;$i<$len;$i++){//从下标为0的元素开始,到下标为$len-1的元素结束,每次+1
        for($j=$i+1;$j<$len;$j++){//从下标为1的元素开始,到下标为$len-1的元素结束,每次+1
            if($arr[$j]<$arr[$i]){//如果二次遍历到的元素($arr[$j])比第一次遍历的元素($arr[$i])小,则将两个元素替换
                $tmp = $arr[$i];
                $arr[$i] = $arr[$j];
                $arr[$j] = $tmp;
            }
        }
    }
}
function sort_buddle1(&$arr){//传址排序
    $len = count($arr);//计算数组长度
    for($i=0;$i<$len;$i++){//从下标为0的元素开始,到下标为$len-1的元素结束,每次+1
        for($j=$len-1;$j>$i;$j--){//从下标为$len-1的元素开始,到下标为第一次遍历到的位置+1($i+1)结束,每次-1
            if($arr[$j]<$arr[$j-1]){//如果两个相邻的元素中后面的比前面的小,则将两个元素替换
                $tmp = $arr[$j];
                $arr[$j] = $arr[$j-1];
                $arr[$j-1] = $tmp;
            }
        }
    }
}
function sort_buddle2(&$arr){//传址排序
    $len = count($arr);//计算数组长度
    $flag = 1;//默认1,继续遍历
    for($i=0;$i<$len&&$flag;$i++){//从下标为0的元素开始,到下标为$len-1的元素或者flag为0结束,每次+1
        $flag = 0;//赋值为0,
        for($j=$len-1;$j>$i;$j--){//从下标为$len-1的元素开始,到下标为第一次遍历到的位置+1($i+1)结束,每次-1
            if($arr[$j]<$arr[$j-1]){//如果两个相邻的元素中后面的比前面的小,则将两个元素替换
                $tmp = $arr[$j];
                $arr[$j] = $arr[$j-1];
                $arr[$j-1] = $tmp;
                $flag = 1;//如果第二次遍历中有元素替换,则将flag置为1,如果一次替换都没有,则说明该位置$i到最后的位置$len-1顺序是正确的
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值