![]() |
Есть необходимость хранить несколько последних чисел.
Ест ли алгоритм быстрее циклического стека? И как его быстрее( с точки зрения скорости работы ) его организовать? ( дополнительно е условие: операции с самими элементами достаточно медленные ) |
Если на ЯВУ, то реализовывать списками можно...
|
Prisoner
ява не подходит он слишком медленна и плохо работает с объектами и мамятью, только СПП! |
Vlad Drakula
Постановка задачи очень расплывчата. Очень. ЯВУ - "язык высокого уровня", а не ява, которая java. И мне очень интересно что такое "циклический стек", очень. |
ivank
если так то еще хуже. дело втом что там очень много вызовов функцый, порядко 1.000.00 в секунду. а задача четко поставлена: как самым тыстрым способом хранить последние N элементов. идея циклической очереди была разработана очень давно. во все компьютерах есть буфер обмена данных с клавиатуры. это массив (вроде из 8 элементов) при нажатии на кнопку туда записывается число, и счетцик конца увеличивается. при чтении берется первый элемент в очереди а счетчик начала сдвигается. если счетчик конца доходит до начала то он обнуняется и начинает затирать ранние элементы. если конец упирается в начало то компьютер начинает пищать, это мы ислушим при зависании винды :) соодветственно я сейчас использую этот аналог, но только я начитаю не скачала, как в очереди, а с конца, как в стеке. |
Vlad Drakula
Что такое циклическая очередь я знаю. А вот циклический стек - твоё изобратение. Собственно очередь на базе статического массива и есть самое оптимальное решение, почкольку все операции - O(1). Это при условии, что она не может переполнится, иначе просто заводим динамический массив и когда у нас кол-во элементов хочет перевалить за доступный максимум, то увеличиваем размер не размышляя вдвое. В случае плюсов удобнее всего юзать std::vector, ибо у него есть .resize(). Кстати, есть стандартные контейнеры дека и очереди, которые и пользуются приблизительно такой стратегией. std::deque и std::queue, соответсвенно. Добавлено: Vlad Drakula Цитата:
|
Время: 11:28. |
Время: 11:28.
© OSzone.net 2001-