插入排序代码混淆了订单

时间:2015-04-18 19:44:52

标签: java

查看下面的代码,第一次迭代是不是意味着i = 0且j = 0-1?为什么没有错误?我认为插入排序假设从数组/右侧的末尾开始。这段代码是如何实现的?

class stevee {
public static void main(String[] args) {
    int A[] = {2,1,9,8,12};
    new stevee().sort(A);
    System.out.println(Arrays.toString(A));
}
public void sort(int[] data) {
    for (int i=0; i<data.length; i++) { //access each element one by one
        int current = data[i];          //
        int j = i-1;
        while (j >= 0 && data[j] > current) {
            data[j+1] = data[j];
            j--;
        }
        data[j+1] = current;
    }
}
}

2 个答案:

答案 0 :(得分:0)

插入排序在大多数示例中都是最终的。但为什么不能从另一方面起作用呢? '正确'和'左'只是帮助条款。插入排序通常用手中的一组卡来解释。你开始把它们放在哪一方是否重要?

并且没有错误原因while也适用于ifj < 0 - &gt;条件未达到 - &gt;阻止未执行。在while条件下你有&&因此两个表达式都必须为true,如果不是,则执行第二次评估没有意义

答案 1 :(得分:-1)

这种情况的条件是:while (j >= 0