【问题标题】:Corman insertion sort in php not workingphp中的Corman插入排序不起作用
【发布时间】:2015-09-20 16:13:06
【问题描述】:

算法

for k from 2 to n
  key = a[k]
  j = k - 1

  while (j > 0 and key > a[j])
    a[j + 1] = a[j]
    j = j - 1
  end while

  a[j + 1] = key
end for

我的代码:

function insertionSort(array $array) {

    $length=count($array);
    for ($i=1;$i<$length;$i++) {
        $element=$array[$i];
        $j=$i-1;
        while($j>0 && $array[$j]>$element) {

            $array[$j+1]=$array[$j];
            $j=$j-1;
            }

        $array[$j+1]=$element;
        }
    return $array;
}

输出:

Array (
    [0] => 5
    [1] => 6
    [2] => 4
    [3] => 3
    [4] => 2
    [5] => 1
)

我在这里做错了什么,为什么第一个元素没有排序?

【问题讨论】:

  • while($j&gt;0 &amp;&amp; $array[$j]&gt;$element) {.... 或许while($j&gt;=0 &amp;&amp; $array[$j]&gt;$element) {
  • 太棒了,谢谢。我太愚蠢了,没有注意到这一点。

标签: php arrays algorithm sorting insertion-sort


【解决方案1】:

您好,请检查您的算法和 PHP 代码中 wile 循环的第二个条件,它可能会对您有所帮助...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    相关资源
    最近更新 更多