Изменения

Перейти к: навигация, поиск

Саморасширяющийся массив

8 байт добавлено, 14:36, 11 июня 2012
м
Метод потенциалов
При каждой операции будем использовать три монетки. Одну из них потратим на само удаление элемента, одну монету на элемент, стоящий на позиции <tex>i-\frac{n}{4}</tex>, и одну монетку на место удаленного элемента. Тогда даже в самом худшем случае (только что расширились, а потом <tex>\frac{n}{4}</tex> удалили) у нас будет хватать денег на копирование в новый массив.
==== Метод потенциалов ====
За потенциал примем число <tex>\Phi=-s+\frac{1}{2}c</tex>, где <tex>s</tex> - число элементов в массиве, <tex>c</tex> - размер массива.
В случае, если при удалении элемента не происходит сужение массива, стоимость операции равна:
<tex>a_i=t_i+\Phi(s-1,\frac{1}{2}c) - \Phi(s,c)=s-1 -s+1+\frac{1}{2}\cdot\frac{1}{2}c + s-\frac{1}{2}c = \frac{1}{4}c + 1 - \frac{1}{4}c=1</tex>
Средняя стоимость операции - <tex>2</tex>, а среднее время работы - <tex>O(1)</tex>.
355
правок

Навигация