Приоритетная очередь в [закрытом] .NET

211
задан Colonel Panic 4 November 2015 в 05:46
поделиться

4 ответа

Мне нравится использовать OrderedBag и OrderedSet классы в PowerCollections как приоритетные очереди.

41
ответ дан BartoszKP 23 November 2019 в 04:33
поделиться

Используйте Java для переводчика C# на реализации Java (java.util. PriorityQueue) в платформе Наборов Java, или более разумно используют алгоритм и базовый код и включают его в класс C# Вашего собственного создания, которое придерживается API платформы Наборов C# для Очередей, или по крайней мере Наборов.

4
ответ дан JeeBee 23 November 2019 в 04:33
поделиться

Я нашел один Julian Bucknall на его блоге здесь - http://www.boyet.com/Articles/PriorityQueueCSharp3.html

, Мы изменили его немного так, чтобы низкоприоритетные объекты на очереди в конечном счете 'пузырились' к вершине со временем, таким образом, они не перенесли бы исчерпания ресурсов.

10
ответ дан Duncan 23 November 2019 в 04:33
поделиться

Вам может понравиться IntervalHeap из библиотеки Generic Collection C5 . Процитируем руководство пользователя

Класс IntervalHeap реализует интерфейс IPriorityQueue , используя интервальную кучу, хранящуюся как массив пар. FindMin и Операции FindMax и get-аксессор индексатора занимают время O (1). DeleteMin, Операции DeleteMax, Add и Update, а также набор средств доступа индексатора требуют времени. O (войти п). В отличие от обычной очереди с приоритетом, интервальная куча предлагает как минимум и максимальное количество операций с той же эффективностью.

API достаточно прост

> var heap = new C5.IntervalHeap<int>();
> heap.Add(10);
> heap.Add(5);
> heap.FindMin();
5

Установить с Nuget https://www.nuget.org/packages/C5 или GitHub https: // github.com/sestoft/C5/

68
ответ дан 23 November 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: