哦,这个常识还是知道的,可是不清楚为什么用了count就会陷入死循环,我觉得count($arr)跟6等价,但是为什么会出错

解决方案 »

  1.   

    当 $i 等于 6  时 $j 等于 5
    $arr[$j+1] = $arr[$j] 就是 $arr[6] = $arr[$j]
    这就给 $arr 增加了一个本不存在的元素
    很自然,count($arr) 就发生了变化循环中你有 print_r($arr); 难道还看不出这一点吗?
    正确的写法应该是$arr = array(5, 2, 4, 6, 1, 3);
    for($i=1;$i<count($arr);$i++) {
      $key = $arr[$i];
      $j = $i-1;
      while($j>=0 && $arr[$j]>$key) {
        $arr[$j+1] = $arr[$j];
        $j--;
      }
      $arr[$j+1] = $key;
    }
    Array
    (
        [0] => 1
        [1] => 2
        [2] => 3
        [3] => 4
        [4] => 5
        [5] => 6
    )
      

  2.   

    谢谢版主,我这设置好像是等全部运行完后才进行输出,所以一直看不到print_r的内容,多谢多谢