谁能告诉我为什么我们应该将内部 for 循环中的计数器 j 设置为 (i+1) 而不是 (i=0) (因为我认为将 j 设置为 i = 0 将获取数组中的所有元素)。 以及为什么我们使用break; 我是编程新手。 预先感谢。
在这里我检查重复项,如果我设置 (j = i+1),数组中的第一个元素将在比较中被跳过(索引为 0),不是吗?
因此,当检查数组中的重复项时(这就是我认为该算法的用途;如果我错了,请纠正我),您需要将每个元素与其他元素检查一次。让我们有一个 2D 数组
pairs
,其中包含您可以检查的所有可能的元素对。
对于具有 4 个元素的数组,二维数组将如下所示:
[(0,0),(0,1),(0,2),(0,3),
(1,0),(1,1),(1,2),(1,3),
(2,0),(2,1),(2,2),(2,3),
(3,0),(3,1),(3,2),(3,3)]
我们可以像你说的那样遍历这个二维数组。
double[] array = new double[] {1,2,3,4}
for (int i=0;i<array.length;i++){
for (int j=0;j<array.length;j++){
}
但是,这会检查 (1,0) 和 (0,1),这是多余的。我们所要做的就是检查上面的元素,包括从左上角到右下角的对角线。这使得我们必须将 j 设置为 i+1。