Я думаю, что ваша функция shiftDown не совсем правильная. Разве вы не хотите что-то еще, как это? (т. е. начинать с самой высокой позиции, работающей в обратном направлении?)
private static void shiftDown(final int pos) {
for (int i = currentSize; i >= pos; i--) {
intList[i+1] = intList[i];
}
} // end shiftDown
Также есть пара незначительных неточностей, которые я заметил, ни одна из которых не приведет к сбою вашей программы, но может быть способом улучшить вашу оценку: (1 ) в процедуре printList вы передали массив arr
, но затем для элемента [0] вы напрямую ссылаетесь на intList, вашу «глобальную» переменную. (2) вы, вероятно, получите больше стилевых точек для передачи длины в printList в качестве параметра, а не просто для прямой ссылки на currentSize. До вас, будет ли это исправлено, программа будет работать в любом случае. Я думаю, я говорю, что определенно лучше, чтобы ЛЮБОЕ передавалось и intList, и currentSize в качестве параметров, например (принимали их как arr и size), иначе не передавайте и не используйте напрямую intList и currentSize.
Надеюсь, это поможет!