Сортировка вставок в Java

1

Я пытаюсь сам научить себя Введение в алгоритмы с помощью 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;
    }
}
  • 0
    Значит, сортировка вашего алгоритма сортировки неверна?
  • 0
    Теперь я в замешательстве. Алгоритм имеет смысл на бумаге.
Показать ещё 3 комментария
Теги:
algorithm
sorting

1 ответ

4
Лучший ответ
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
    }
}
  • 0
    Для массива {5,6,8,9,1,2,3} я получаю [5, 1, 2, 3, 6, 8, 9]. Это какая-то ошибочная ошибка?
  • 0
    Да, но это не мое! : p Попробуйте скопировать мой код точно.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню