<?php
function BubbleSort($str)
{
for ($i=0;$i<count($str);$i++)
{
     for ($j=count($str)-2;$j>=$i;$j--)
     {
             if($str[$j+1]<$str[$j])
             {
                 $tmp = $str[$j+1];                 $str[$j+1]=$str[$j];
                 $str[$j]=$tmp;
             }     }}
return $str;
}
$str = array(3,6,1,5,9,0,4,6,11);
print_r(BubbleSort($str));
?>

解决方案 »

  1.   

    for ($j=count($str)-2;$j>=$i;$j--)
    从数组的倒数第二个数字开始向前循环,当后一个数小于前一个数就交换位置每次i循环后的结果如下:
    1: (0,3,6,1,5,9,4,6,11);
    2: (0,1,3,6,4,5,9,6,11);
    3: (0,1,3,4,6,5,6,9,11);
    4: (0,1,3,4,5,6,6,9,11); //排序已成功,但是循环继续。
    5: (0,1,3,4,5,6,6,9,11);
    6: (0,1,3,4,5,6,6,9,11);
    7: (0,1,3,4,5,6,6,9,11);
    8: (0,1,3,4,5,6,6,9,11);
    9: (0,1,3,4,5,6,6,9,11);