我正在尝试理解以下代码:
/**
* Simple insertion sort.
* @param a an array of Comparable items.
*/
public static void insertionSort( Comparable [ ] a )
{
for( int p = 1; p < a.length; p++ )
{
Comparable tmp = a[ p ];
int j = p;
for( ; j > 0 && tmp.compareTo( a[j-1] ) < 0; j-- )
a[ j ] = a[ j - 1 ];
a[ j ] = tmp;
}
}
但我不确定for( ; )
是什么意思所以我需要你的帮助。
对不起,如果它是重复的,但我在这里和谷歌搜索,但到目前为止没有。
答案 0 :(得分:7)
for循环的第一部分是在循环开始之前发生的事情。通常它用于分配变量。
“;”没有任何东西(除了括号)之前它只是说“在循环开始之前我什么都不想做”。不需要分配变量等等。
答案 1 :(得分:2)
很简单:它基本上意味着
for(..a.. ; ..bb.. ; ..c..){ // }.
.. a ..:是你初始化的,如果有的话或者把它留空。 ..b ..:循环运行一次后要进行的任何检查。 ..c ..循环运行一次后对变量的任何更改
答案 2 :(得分:0)
我猜你正在徘徊第二个for循环语法。它只是一个没有任何初始化部分的常规for循环。必须在循环之前声明j
,因为它在循环结束后在外部使用。
答案 3 :(得分:0)
这只是一个分隔符。 如果它前面没有任何东西,那意味着逻辑的一部分是空的。 格式为
for( <stuff to do before starting the loop>
;
<stuff to do before each iteration, and maybe give a value of 0 to terminate it>
;
<stuff to do at the end of each iteration>
)
坦率地说,我发现它非常灵活,因为不是每个循环的形式都是“为每个xxx执行此操作”。 你在每个部分中放入的内容实际上是任意的。