为什么冒泡排序的C到PHP的移植不能工作?


Why does this porting of C to PHP of Bubble Sort do not work?

我决定为包含排序算法和搜索算法的语言创建帮助文件。我从C开始,想在PHP中求邻边。但是我传递的数组没有排序。为什么?

<?php
        function BubbleSort($array, $length)
    {
        for($i = 0; $i < $length - 1; ++$i)
        {
            for($j = 0; $j < $length - $i - 1; ++$j)
            {
                if($array[$j] > $array[j + 1])
                {
                    $tmp = $array[$j];
                    $array[j] = $array[j + 1];
                    $array[j + 1] = $tmp;
                }
            }
        }

    }   
    $array = [5,2,3,1,2];
    $size = 5;
    print "Array is now: ";
    for($i = 0; $i < $size; $i++)
    {
        print "{$array[$i]} ";
    }
    print "'n";
    BubbleSort($array, $size);
    for($i = 0; $i < $size; $i++)
    {
        print "{$array[$i]} ";
    }
    print "'n";
    ?>

您不是通过引用传递数组,因此您的函数必须返回数组,然后您必须将其分配回原始数组。

如果没有其他语法错误,老实说我没有看

语法错误

改变
$array[j + 1]

$array[$j + 1]

由于php的松散类型和其他原因,这导致j被视为常数j,并且警告级别类似于~ warning:未知常数j假设'j',它将其视为'j'的字面值字符串,然后将'j'添加到1,或类似的东西,这只是我的顶部。