реклама на сайте
подробности

 
 
> Устаревание записей в таблице
ataradov
сообщение Dec 27 2011, 22:43
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



Есть таблица (маршрутизации, но это не важно) в ней максимум несколько сотен записей, часть из них используются часто, часть - редко. При добавлении новой записи нужно выкинуть самую редко используемую и на ее место вставить новую.

Помогите придумать простой алгоритм не основанный на таймерах, а только на факте использования записи. Абсолютная точность не нужна, достаточно чтобы записи, которые используются часто не затирались.

Ресурсы ограничены, поэтому на каждую запись желательно потратить не более одного байта под это дело. Применение связанных списков и прочих сложных структур данных тоже отпадает.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Major
сообщение Dec 28 2011, 03:35
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 375



Как происходит поиск записи в таблице?

Если у вас не хеш, а прямой поиск, то пузырьковая сортировка.
Пусть есть обращение к записи с индексом N, то переносим ее в индекс N-1 (делаем swap(rec[N-1],rec[N])
Пр появлении новой записи она записывается в самый последний индекс, так как в самом низу самая редкая запись.
Go to the top of the page
 
+Quote Post
ataradov
сообщение Dec 28 2011, 03:39
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (Major @ Dec 28 2011, 06:35) *
Как происходит поиск записи в таблице?
Простым последовательным поиском.

QUOTE (Major @ Dec 28 2011, 06:35) *
Если у вас не хеш, а прямой поиск, то пузырьковая сортировка.
Спасибо. У меня это в голове вертелось, но я зациклился на переносе в самый верх, а не на одну запись.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 05:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01379 секунд с 7
ELECTRONIX ©2004-2016