我决定为包含排序算法和搜索算法的语言创建帮助文件。我从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";
?>发布于 2015-07-08 12:53:20
您没有通过引用传递数组,因此您的函数必须返回数组,然后您必须将其赋值回原始数组。
如果没有语法错误的话,老实说,我没有注意到。
发布于 2015-07-08 12:54:06
您有语法错误
变化
$array[j + 1]至
$array[$j + 1]由于php是松散类型的,以及其他原因,这导致j被视为常量j,以及类似于~ warning的警告级别:未知常量j假设为'j',它将其视为'j‘的文字字符串,然后将'j’加到1,或类似的东西,这就是我想不到的。
https://stackoverflow.com/questions/31283736
复制相似问题