为什么InsertionSort不运行?

时间:2018-10-03 14:22:29

标签: java algorithm optimization

这是InsertionSort的代码,但是为什么它不运行?也就是说,它不会按升序对数字进行排序。

class A {
    public static void main(String[] args) {        
    int [] n = {3,2,1};

    for (int j = 2; j < n.length; j++) {        
        int key = n[j];
        int i = j - 1;  

        while (i > 0 && n[i] > key) {           
            n[i + 1] = n[i];
            i = i-1;            
        }   

        n[i + 1] = key;     
    }   

    for(int k: n)
        System.out.print(k);        
    }   
}

2 个答案:

答案 0 :(得分:2)

您为算法考虑的索引基于1。它必须基于零(这就是数组的方式)。

在您的for循环中,从j = 1开始

for (int j = 1; j < n.length; j++)

,然后在while循环中检查while(i>=0 && n[i])>key)

答案 1 :(得分:1)

您应从for开始1循环:

for (int j = 1; j < n.length; j++) {

并且您的while循环应为>= 0

while (i >= 0 && n[i] > key) {

给出:

  

123