Допустим, у меня есть большая коллекция элементов.
Каждый элемент имеет поле «position», которое является положительным целым числом.
Никакие два элемента не имеют одинакового значения для поля «позиция».
Единственная поддерживаемая операция коллекции: addElement (newElement, positionAfterElement), где:
- newElement - новый элемент, который будет добавлен (его позиция пока неизвестна)
- positionAfterElement - это существующий элемент коллекции.
Функция гарантирует, что:
- position (positionAfterElement)
- ни один другой элемент в коллекции не имеет позиции между позицией (positionAfterElement) и позицией (newElement)
Я могу изменить значение всех позиций элемента по своему желанию, но я хочу минимизировать количество изменений (в среднем).
Как мне реализовать функцию addElement?
Я мог бы просто сдвинуть все элементы с более высокими позициями на 1, но я почти уверен, что должен быть лучший способ сделать это.
Спасибо всем за помощь.