Реферат: Создание эффективной реализации сортированного списка с использованием generics
}
PriorPage, NextPage нужны для навигации по дереву.
Основную функциональность двухуровневого массива реализует класс TwoLevelSortedDictionary:
using Generic = System.Collections.Generic; public class TwoLevelSortedDictionary<K,V>: Generic.IDictionary<K,V> { internal LeafPage<K,V> CurrentLeafPage; // Текущаястраницасданными internal struct NodeItem // Структура элементов верхнего уровня { internal K Key; internal LeafPage<K,V> ChildPage; } internal NodeItem[] NodeArray; // Массивэлементов 2 уровня internal int _pageCount; // Количество страниц 1 уровня internal int _currentPageIndex; // Текущий индекс элемента в массиве 2 уровня internal int _currentElementIndex; // Текущийиндексв CurrentLeafPage internal Generic.IKeyComparer<K> _comparer; // Пользовательскийкомпаратор internal int _count; // Количествоэлементоввобъекте bool _selected; // Выбранлиэлемент internal int version=1; // Нужендляперечислителей public TwoLevelSortedDictionary(Generic.IKeyComparer<K> Comp) { this._comparer = Comp; CurrentLeafPage = new LeafPage<K,V>(); // Выделяемстраницу 1 уровня _pageCount = 1; } |
Двухуровневый массив позволяет осуществлять навигацию по находящимся в нем элементам. При этом возникает понятие текущего элемента, у которого можно считывать или устанавливать значение, и читать значение ключа. Для позиционирования на запись с некоторым ключом используется функция NavigateKey.
Алгоритм работы этой функции таков. Поскольку информация в массиве всегда упорядочена, то поиск можно осуществлять с помощью алгоритма бинарного поиска (то есть половинного деления). Единственная проблема, не позволяющая использовать классический алгоритм напрямую – это то, что, что массив состоит из двух уровней. Поэтому алгоритм поиска разделяется на два этапа. На первом этапе проверяется, есть ли массив верхнего уровня. Если есть, то в нем ищется страница, на которой может находиться искомый элемент. Если массива верхнего уровня нет, в качестве страницы, на которой будет производиться дальнейший поиск, используется единственная существующая страница.
На втором этапе производится классический бинарный поиск по ключу в сортированном массиве.
К-во Просмотров: 516
Бесплатно скачать Реферат: Создание эффективной реализации сортированного списка с использованием generics
|