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