Я пытаюсь сам научить себя Введение в алгоритмы с помощью CLRS, и я только что сделал, пытаясь запрограммировать алгоритм сортировки вставки. Алгоритм берется непосредственно из книги, но я не слишком уверен в своем Java-коде. Сортировочная часть неверна. Если кто-то может указать на мою ошибку, это было бы фантастически!
public static void main(String[] args){
int[] A = {5,6,8,9,1,2,3};
System.out.println(Arrays.toString(A));
InsertionSort(A);
System.out.println(Arrays.toString(A));
}
public static void InsertionSort(int[] A){
for(int j = 1; j < A.length; j++){
int key = A[j];
int i = j - 1;
while(i > 1 && A[i] > key){
A[i + 1] = A[i];
i = i - 1;
}
A[i + 1] = key;
}
}
public static void insertionSort(int[] A){
for(int j = 1; j < A.length; j++){
int key = A[j];
int i = j; //change - don't -1
while(i > 0 && A[i-1] > key){ //change here, must go from 0 and note change to index
A[i] = A[i - 1]; //change here
i = i - 1;
}
A[i] = key; //change here
}
}