Показать полную графическую версию : Методы хранение данных.
Vlad Drakula
06-01-2004, 19:53
Есть необходимость хранить несколько последних чисел.
Ест ли алгоритм быстрее циклического стека?
И как его быстрее( с точки зрения скорости работы ) его организовать?
( дополнительно е условие: операции с самими элементами достаточно медленные )
Prisoner
07-01-2004, 05:56
Если на ЯВУ, то реализовывать списками можно...
Vlad Drakula
07-01-2004, 19:10
Prisoner
ява не подходит он слишком медленна и плохо работает с объектами и мамятью, только СПП!
Vlad Drakula
Постановка задачи очень расплывчата. Очень.
ЯВУ - "язык высокого уровня", а не ява, которая java.
И мне очень интересно что такое "циклический стек", очень.
Vlad Drakula
08-01-2004, 01:02
ivank
если так то еще хуже.
дело втом что там очень много вызовов функцый, порядко 1.000.00 в секунду.
а задача четко поставлена: как самым тыстрым способом хранить последние N элементов.
идея циклической очереди была разработана очень давно.
во все компьютерах есть буфер обмена данных с клавиатуры.
это массив (вроде из 8 элементов) при нажатии на кнопку туда
записывается число, и счетцик конца увеличивается.
при чтении берется первый элемент в очереди а счетчик начала
сдвигается.
если счетчик конца доходит до начала то он обнуняется и начинает
затирать ранние элементы.
если конец упирается в начало то компьютер начинает пищать, это мы
ислушим при зависании винды :)
соодветственно я сейчас использую этот аналог, но только я начитаю не
скачала, как в очереди, а с конца, как в стеке.
Vlad Drakula
Что такое циклическая очередь я знаю. А вот циклический стек - твоё изобратение. Собственно очередь на базе статического массива и есть самое оптимальное решение, почкольку все операции - O(1). Это при условии, что она не может переполнится, иначе просто заводим динамический массив и когда у нас кол-во элементов хочет перевалить за доступный максимум, то увеличиваем размер не размышляя вдвое. В случае плюсов удобнее всего юзать std::vector, ибо у него есть .resize(). Кстати, есть стандартные контейнеры дека и очереди, которые и пользуются приблизительно такой стратегией. std::deque и std::queue, соответсвенно.
Добавлено:
Vlad Drakula
хранить последние N элементов - задача всё же нечёткая. Ибо не сказано, что с ними делается потом. Хотя в общем случае, очередь самое подходящее решение.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC