为什么 InsertionSort 不运行?

这是 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);        

    }   

}


凤凰求蛊
浏览 174回答 2
2回答

叮当猫咪

您为算法考虑的索引是基于 1 的。它需要基于零(数组就是这样)。在你的 for 循环中从 j =1 开始for&nbsp;(int&nbsp;j&nbsp;=&nbsp;1;&nbsp;j&nbsp;<&nbsp;n.length;&nbsp;j++)并在您的 while 循环中检查&nbsp;while(i>=0 && n[i])>key)

MM们

您应该for在1以下位置开始循环:for&nbsp;(int&nbsp;j&nbsp;=&nbsp;1;&nbsp;j&nbsp;<&nbsp;n.length;&nbsp;j++)&nbsp;{你的while循环应该是>= 0:while&nbsp;(i&nbsp;>=&nbsp;0&nbsp;&&&nbsp;n[i]&nbsp;>&nbsp;key)&nbsp;{这使:123
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java