void insert(t)
i = t/ (1 + maxval/bins) bin[i] = ri nsert(bin[i ], t)
В данном случае функция ri nsert такая же, как и для связанного списка. Аналогичным образом и функция report берется из программы со списками и применяется к каждой из корзин по очереди.
Листинг 13.23. Функция report класса IntSetBins
void report(v)
J = 0
for i = [0. bins)
for (node *p = bln[i ]. p '= sentinel: p = p->next) v[j++] = p->val
Таблица 8.2 свидетельствует, что реализация, использующая корзины, оказывается достаточно быстрой. Строка «Корзины*» содержит времена выполнения оптимизированной версии программы с корзинами, в которой память под все узлы выделяется одним блоком в процессе инициализации (как в задаче 5). Новая структура использует в четыре раза меньше памяти и работает вдвое быстрее исходной. Раскрытие рекурсии позволило ускорить программу еще на 10%.
Опубликовал vovan666
April 17 2013 00:03:40 ·
0 Комментариев ·
4198 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.