首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这种将C语言移植到PHP的Bubble Sort不起作用?

为什么这种将C语言移植到PHP的Bubble Sort不起作用?
EN

Stack Overflow用户
提问于 2015-07-08 12:50:54
回答 2查看 35关注 0票数 2

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

代码语言:javascript
复制
<?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";

    ?>
EN

回答 2

Stack Overflow用户

发布于 2015-07-08 12:53:20

您没有通过引用传递数组,因此您的函数必须返回数组,然后您必须将其赋值回原始数组。

如果没有语法错误的话,老实说,我没有注意到。

票数 1
EN

Stack Overflow用户

发布于 2015-07-08 12:54:06

您有语法错误

变化

代码语言:javascript
复制
$array[j + 1]

代码语言:javascript
复制
$array[$j + 1]

由于php是松散类型的,以及其他原因,这导致j被视为常量j,以及类似于~ warning的警告级别:未知常量j假设为'j',它将其视为'j‘的文字字符串,然后将'j’加到1,或类似的东西,这就是我想不到的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31283736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档