第二层for循环出现问题
public static <E extends Comparable<E>> void sort2(E[] arr){ //插入排序小优化 for (int i = arr.length - 1; i >= 0; i --){ E t = arr[i]; for (int j = i + 1; j <= arr.length - 1; j ++){ if (arr[j].compareTo(t) < 0) arr[j-1] = arr[j]; else{ arr[j-1] = t; break; } } } }
我用了老师课上的students来测试,每一行都设置了断点在下图这一步出现了问题,程序直接跳过了第二个for循环内的代码,转到第一个for循环开始执行。
但是此时j = 2,满足我设置的j<=len-1(len = 3)的条件,为什么还会跳出for循环呢
9
收起
正在回答 回答被采纳积分+1
1回答
liuyubobobo
2022-01-24 01:44:33
跳过的应该是:
程序初始 i = 2,所以 j = 3,3 <= 2 不成立,所以直接跳过了。然后来到了 i = 1;
==========
如果你的问题不是这个的话,我通过你给的截图看不出你说的具体问题是什么。请在代码中添加一定的输出。(比如在内外循环内打印出 i 和 j 的值),然后描述:在什么测试用例下,你认为输出应该是怎样的?但是即使怎样的?你觉得有问题?
继续加油!:)
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星