Назад к основам – обобщенные структуры данных и алгоритмы в .NET 2.0

ОГЛАВЛЕНИЕ

С момента первого выпуска .NET было желание написать собственную коллекцию структур данных и алгоритмов. Это попытка предоставить многоразовую, обобщенную коллекцию структур данных и алгоритмов для применения в .NET 2.0 и выше.

•    Скачать исходники - 265.8 Кб (с тестами NUnit)
•    Скачать двоичные файлы - 40.5 Кб
•    Домашняя страница проекта NGenerics (CodePlex)

Статья не дает все подробности и полные описания внутреннего устройства этих коллекций и алгоритмов - наоборот, она дает ссылки на имеющиеся в интернете ресурсы (нет смысла пытаться обойти Википедию) и сообщает любопытные особенности данной конкретной реализации.

Справка

Каркас .NET вырос в очень богатый каркас. Он предоставляет множество продуманных интерфейсов и классов, но пренебрегает множеством структур данных и алгоритмов, имеющих важное значение в области информатики. Данная библиотека старается предоставить этот отсутствующий функционал и расширить каркас .NET.

Обзор

Сейчас реализованы следующие структуры данных и алгоритмы:

Новые структуры данных

Расширенные структуры данных

Алгоритмы сортировки

Алгоритмы на графах

Association<TKey, TValue>

VisitableHashTable<TKey, TValue>

пузырьковая сортировка

алгоритм поиска кратчайшего пути одиночного источника Дейкстры

Bag<T>

VisitableLinkedList<T>

блочная сортировка

алгоритм минимального связывающего дерева Прима

BinaryTree<T>

VisitableList<T>

коктейльная сортировка

 

BinarySearchTree<TKey, TValue>

VisitableQueue<T>

сортировка гребнем

Математические алгоритмы

Deque<T>

VisitableStack<T>

гномья сортировка

генерация чисел Фибоначчи.

GeneralTree<T>

 

древовидная сортировка

алгоритм Евклида

Graph<T>

 

сортировка вставкой

 

Heap<T>

 

сортировка слиянием

 

Matrix

 

сортировка переносом четный- нечетный

 

PascalSet

 

быстрая сортировка

 

PriorityQueue<T>

 

сортировка выбором

 

SkipList<TKey, TValue>

 

сортировка перемешиванием

 

SortedList<T>

 

сортировка методом Шелла

 

SortedList<T>

 

сортировка методом Шелла

 

RedBlackTree<T>

     

ReadOnlyPropertyCollection <T, TProperty>

     

ObjectMatrix<T>

     

HashList<TKey, TValue>