排序一维数组,但array [i + 1]始终在索引零处打印元素

时间:2019-06-20 18:06:57

标签: java arrays sorting

你好,我有一个小问题。 我想要一维排序数组。 这里的代码,

public class MyClass {
public static void main(String args[]) {
    String[] array = new String[]{"a","b","c","d","f"};
    String temp;
    for(int i =0; i < array.length; i++){
        if(i +1 < array.length){
            System.out.print("n >>" + i +" ");
            temp = array[i];
            array[i] = array[i+1];
            array[i+1] = temp;
            System.out.println(array[i+1]+ " " +array[i]);
        }
    }

}

}

执行此代码时,我得到了打印:

n >>0 a b
n >>1 a c
n >>2 a d
n >>3 a f

我得到a的数组[i + 1]。请给我解释一下。 谢谢。

2 个答案:

答案 0 :(得分:1)

所以你有一个数组

[a b c d f]您将temp设置为数组(a)中的第一个元素。

temp = array[i]

然后将当前元素(0)设置为下一个元素(1) 所以现在我们有了 [b b c d f]

array[i] = array[i+1];

然后将数组中的下一个元素设置为当前元素。在这种情况下,

array[i+1] = temp

所以数组现在为[b a c d f]

然后打印下一个元素。这将是“ a”。

当循环经过时,现在将查看第二个元素或索引(1) 是“ a”,然后针对下一个元素再次开始整个过程​​。

'i'现在将等于索引(1)处数组中的第二个元素,即'c',并且将执行相同的操作以生成数组:  [b c a d f]。

此循环将执行的操作是将'a'携带到数组的末尾。

答案 1 :(得分:0)

对于循环的每次迭代,在位置i处,您始终将在i处的元素交换为i + 1。这意味着在第一次迭代(其中i为0)中,“ a”从索引0移到1,然后检查array[i+1],在这种情况下为array[1],即“ a”你刚搬走。

在下一次迭代中也是如此。您在索引1处以“ a”结尾,然后将其移至索引2,然后选中array[2]