我正在尝试打印插入排序算法的步骤
我之前用 c++ 写过,效果很好,但是当我转换成 时Java
,它给了我这个错误
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at insertion.insertion_sort(insertionSort.java:45)
at insertionSort.main(insertionSort.java:8)
这是我的代码:
/* print the steps of insertion sort algorithm */
class insertionSort {
public static void main(String[] args) {
insertion obj = new insertion();
obj.insertion_sort();
} // end of main function
} // end of insertionSort class
class insertion {
int A[] = { 5, 8, 9, 1, 0, 4, 7, 3, 6, 2 };
final int ELEMENTS = 10;
void printStep(int source, String destination) {
System.out.print("move array[" + source + "] -----> " + destination);
}
void printStep(int source, int destination) {
System.out.print("move array[" + source + "] -----> " + "array["
+ destination + "] ");
}
void printStep(String source, int destination) {
System.out.print("move " + source + " -----> array[" + destination
+ "] ");
}
void insertion_sort() {
int key, i;
for (int j = 1; j < ELEMENTS; j++) {
key = A[j];
printStep(j, "key");
System.out.println();
i = j - 1;
while (A[i] > key && i >= 0) {
A[i + 1] = A[i];
printStep(i + 1, i);
System.out.println();
i = i - 1;
}
A[i + 1] = key;
printStep("key", i + 1);
System.out.println();
System.out.println("======================================");
}
} // end of insertion_sort ( )
} // end of insertion class
请有人解释我的错在哪里?