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

来源:2-6 插入排序法的改进

寻找光明的黑马

2017-04-10

写回答

3回答

liuyubobobo

2017-04-11

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

0
4
寻找光明的黑马
非常感谢!
2017-04-12
共4条回复

寻找光明的黑马

提问者

2017-04-12


我截取其中函数部分,前面的运行正确,而后面的可以运行但是排序错误(我用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
2
寻找光明的黑马
回复
liuyubobobo
老师,经过你的点化,我明白了,在后面加了一个else,break就好了,原因也想通了,多谢老师。
2017-04-12
共2条回复

我是帅气小裁缝

2017-04-10

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

0
0

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程