【问题标题】:sort numbers in php,在php中对数字进行排序,
【发布时间】:2017-04-14 11:46:01
【问题描述】:

您好,我正在使用 php 学习算法,我想将此伪代码转换为 php,

for i = 1 to n − 1
  minval = A[i]
  minindex = i
    for j = i to n
      if (A[j] < minval)
         minval = A[j]
         minindex = j
       exchange A[i] and A[minindex]

这是php中对应的代码

$A = array(1, 4, 2, 3, 70, 10, 7 );
    $n = sizeof($A);
    for ($i = 0; $i == $n - 1; $i++){
        for ($j = $i + 1; $j == $n; $j++){
            if ($A[$i] > $A[$j]){
                 $temp = $A[$j];
                $A[$j] = $A[$i];
                $A[$i] = $temp;
            }
        }
    }

print_r($A);

print_r 将数组作为原始顺序输出,为什么我的算法不重新排序数组?

【问题讨论】:

  • 它永远不会进入if ($A[$i] &gt; $A[$j]){。你检查了吗?
  • 你说的是哪种算法?!
  • @Pedro Lobito 冒泡排序

标签: php algorithm sorting


【解决方案1】:

你应该检查你的forloops:

for ($i = 0; $i == $n - 1; $i++){
    for ($j = $i + 1; $j == $n; $j++){

应该是

for ($i = 0; $i < $n - 1; $i++){
    for ($j = $i + 1; $j < $n; $j++){

for 中的第二个参数是继续循环的要求。

【讨论】:

  • 谢谢老兄,嗯,但我认为 for( $i = 0; $i == $n; $i++) 的意思是“继续循环直到 $i 等于 $n”我错了?
  • 是的,你错了,它的真正意思是“继续while $i 等于 $n”,这绝不是真的,所以它永远不会进入循环
  • @MohamedKira 这不是 for 循环的工作方式。您可以查看documentation 了解更多信息。它的真正意思是“在 $I 等于 $n 时执行此循环”,但由于循环第一次“激活”,因此结果为 false 并将结束循环。
  • @MohamedKira 底线是,您需要在发布之前调试一次您的代码;)。希望这会有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-02
  • 1970-01-01
  • 2012-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多