Я думаю, что вы правы, это очень похоже на сортировку вставки .
Этот фрагмент предполагает, что A[0]
уже вставлен. Если n == 0
, то проверка k > 0
завершится неудачно, и выполнение продолжится на A[k] = key;
, при этом первый элемент будет сохранен в массиве.
Этот фрагмент также предполагает, что A[0:n-1]
уже отсортирован. Он проверяет A[n]
и начинает сканирование массива в обратном направлении, перемещаясь на одно место вперед на каждый элемент, который больше, чем исходная клавиша A[n]
.
Как только сканирование обнаруживает элемент, меньший или равный ключу, оно вставляет его в это место.