I am trying to print the steps of the insertion sort algorithm
I wrote it in c++ before & it worked very good, but when I converted into Java
, it gave me this error
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at insertion.insertion_sort(insertionSort.java:45)
at insertionSort.main(insertionSort.java:8)
and this is my code :
/* 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
plz someone explain where is my wrong?