Обратите пристальное внимание на эту строку, пока (i> 0 && A [i]> key) вашей переменной мне нужно go для индекса 0, а в вашем случае это не так i> = 0 исправляет это.
Также я надеюсь, что вы можете представить себе, как работает алгоритм -
- Вы go с индексом 1 до n-1 в вашем массиве с переменной j
- Вы сохраняете элемент по индексу j в ключевой переменной, чтобы не потерять значение
- Вы проверяете индексы от 0 до j-1 с вашей переменной i и продолжаете двигаться элементы больше, чем ключ, на шаг впереди
- Таким образом, вы останавливаетесь на индексе i, содержащем элемент, меньший или равный ключу, или останавливаетесь на -1, если все элементы от 0 до i-1 больше, чем ключ
- Наконец, вы помещаете свой ключевой элемент в индекс i + 1