Ваш лог c правильный, он должен работать и в принципе это сортировка вставкой, вы правы. Тем не менее, ваш алгоритм будет выполнять ненужные итерации в текущей реализации.
Внутренний l oop будет go через все значения, которые l ie оставил для i
, даже если мы уже нашли место вставить. В результате ваше значение index
будет указывать на правильное место, но l oop будет go дальше, но условие if
не будет выполнено до следующего значения i
.
Чтобы исправить это, вы можете просто добавить следующее:
else {
break;
}
Это должно закончиться sh внутренним l oop и go к следующему значению внешнего l oop. Однако было бы еще лучше заменить внутренний l oop на while
, чтобы сделать код более читабельным.
Что касается сложности, ваш текущий код будет работать со сложностью O (n ^ 2) даже для отсортированного массива. С таким улучшением он все равно будет работать в среднем на O (n ^ 2), но в лучшем случае он будет улучшен до O (n).