冒泡排序PHP实现

$arr = array(1, 23, 2, 15, 99, 16, 99999, 45, 100, 25, 6, 322);


function sortarr($arr) {
$len = count($arr);
/*for ($i = 0; $i < $len - 1; $i++) {         //从左开始往右。小的留在左边。(留住)
for ($j = $i + 1; $j < $len; $j++) {
if ($arr[$i] < $arr[$j]) {
$ano = $arr[$i];
$arr[$i] = $arr[$j];
$arr[$j] = $ano;
}
}
}*/

for ($i = 0; $i < $len; $i++) {            //从左开始往右。大的往右挪。(浮动)
for ($j = 0; $j < $len-$i-1; $j++) {
if ($arr[$j] > $arr[$j+1]) {
$ano = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $ano;
}
}
}

/*for ($i = 0; $i < $len - 1; $i++) {        //从右边开始往左。把大的往前挪。(浮动)
for ($j = $len - 1 ; $j > $i; $j--) {
if ($arr[$j] > $arr[$j-1]) {
$ano = $arr[$j];
$arr[$j] = $arr[$j-1];
$arr[$j-1] = $ano;
}
}
}*/

/*for ($i = 1; $i < $len; $i++) {             //从右开始往左。把小的留住。(留住)
for ($j = $len-$i-1; $j >= 0; $j--) {
if ($arr[$len-$i] > $arr[$j]) {
$ano = $arr[$len-$i];
$arr[$len-$i] = $arr[$j];
$arr[$j] = $ano;
}
}
}*/


foreach ($arr as $value) {
echo $value.'     ';
}
}


sortarr($arr);


留住:两个对比的数的标记,一个固定,一个移动。

浮动:两个对比的数的标记都同时移动。

标记可以理解为指向对应变量的一个箭头。轮到谁指向谁。

例如:从左边开始,用留住的,则是左边那个固定,右边的往右移。

    从右边开始,用浮动的,则是左右两个同时向左移动。


从左边开始考虑用留住。

从右边开始考虑用浮动。


?时间和空间复杂度?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值