请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,为什么第二个for循坏,不可以像之前那样拆分开来写,就是将arr[j-1]>e写到这个for循环下面的if语句中,这样会出错??

正在回答

3回答

liuyubobobo 2017-04-11 01:23:09

不会出错,就是一个具体的代码编写风格问题而已,可以自己试试看拆开来写哦。这种逻辑编写的代码风格没有对错之分,找到自己看得舒服的就好了,其实我也更习惯拆开来写呢:)

0 回复 有任何疑惑可以回复我~
  • 提问者 寻找光明的黑马 #1
    我截取其中函数部分,前面的运行正确,而后面的可以运行但是排序错误(我用php写的)
    
    function insert($a){
        $len=count($a);
        for($i=1;$i<$len;$i++){
            $t=$a[$i];
            for($j=$i;$j>0&&$t<$a[$j-1];$j--){
                    $a[$j]=$a[$j-1];
            }
            $a[$j]=$t;
        }
        return $a;
    }
    回复 有任何疑惑可以回复我~ 2017-04-12 00:52:56
  • 提问者 寻找光明的黑马 #2
    这是后面的
    function insert($a){
        $len=count($a);
        for($i=1;$i<$len;$i++){
            $t=$a[$i];
            for($j=$i;$j>0;$j--){
                if($t<$a[$j-1]){
                    $a[$j]=$a[$j-1];
                }
            }
            $a[$j]=$t;
        }
        return $a;
    }
    回复 有任何疑惑可以回复我~ 2017-04-12 00:53:45
  • 提问者 寻找光明的黑马 #3
    老师看我下面的回复,看的清楚一点
    回复 有任何疑惑可以回复我~ 2017-04-12 01:02:37
提问者 寻找光明的黑马 2017-04-12 01:01:52

我截取其中函数部分,前面的运行正确,而后面的可以运行但是排序错误(我用php写的)
function insert($a){ 
    $len=count($a);  
    for($i=1;$i<$len;$i++){
        $t=$a[$i];
        for($j=$i;$j>0&&$t<$a[$j-1];$j--){
             $a[$j]=$a[$j-1];
        }
        $a[$j]=$t;
    }  
return $a;
}
这是后面的
function insert($a){
    $len=count($a);
    for($i=1;$i<$len;$i++){
        $t=$a[$i];
        for($j=$i;$j>0;$j--){
            if($t<$a[$j-1]){
                $a[$j]=$a[$j-1];
            }
        }
        $a[$j]=$t;
    }
    return $a;
}


0 回复 有任何疑惑可以回复我~
  • 你的这两个函数逻辑不等价哦。在第一个函数里,遇见 $t >= $a[$j-1] 的情况,整个循环会结束;但是在第二个函数里循环不会结束哦,想想看?:)
    回复 有任何疑惑可以回复我~ 2017-04-12 01:08:54
  • 提问者 寻找光明的黑马 回复 liuyubobobo #2
    老师,经过你的点化,我明白了,在后面加了一个else,break就好了,原因也想通了,多谢老师。
    回复 有任何疑惑可以回复我~ 2017-04-12 01:27:20
我是帅气小裁缝 2017-04-10 21:35:20

不会出错啦,只是这样写在for()里面更加清晰一点-

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信