В зависимости от того, будет ли новое значение больше или меньше предыдущего, вы можете «раздуть» его на месте.
псевдо-код будет выглядеть примерно так:
if new value larger than old value
then if new value is larger than next value in collection
then swap the value with the next value
iterate until value is not larger than next value
else if new value is smaller than previous value in collection
then swap the value with the previous value
iterate until value is not smaller than the previous value
Конечно, лучше всего было бы использовать бинарный поиск.
Сначала найдите новое место в коллекции, где должен находиться элемент. Затем сдвиньте элементы на место. Если новый индекс пятна больше текущего индекса пятна, вы перемещаете элементы по одному элементу, иначе вы их перемещаете. Вы перемещаете элементы, начиная с места, которое вы ранее занимали, до той, которую вы хотите занять. Затем вы сохраняете значение в найденном вами месте.
Например, предположим, что эта коллекция:
a b c d e f g h i j
10 20 30 40 50 60 70 80 90 100
Затем вы хотите, чтобы изменить значение дзета элемента от 60 до 95.
Сначала вы выяснить, где она должна быть.Использование двоичного поиска, мы обнаружили, что это должно быть между 90 и 100:
a b c d e f g h i j
10 20 30 40 50 60 70 80 90 100
^
+- here
Затем вы переносите элементы из текущего положения вниз один элемент, например:
a b c d e f g h i j
10 20 30 40 50 60 70 80 90 100 <-- from this
10 20 30 40 50 70 80 90 ?? 100 <-- to this
И тогда вы сохраните значение в ?? пространство, которое дает этому образованию
a b c d e g h i f j
10 20 30 40 50 70 80 90 95 100
Ответ зависит от того, как представлен список (связанный список, массив) и есть ли у вас прямой доступ к измененному элементу или его нужно найти первым. Как указано, этот вопрос не указан. –