У меня есть класс Node, который имеет свойство float Distance.Какую родовую коллекцию я должен выбрать в C# для поддержания отсортированного «списка»
Мне нужна структура данных, которую я могу разместить внутри всех моих узлов, и они будут отсортированы (например, в дереве AVL или Red Black Tree).
- Я хочу, чтобы вставить в O (журнал (п))
- Я хочу, чтобы извлечь и удалить минимум в O (журнал (п))
Я пытался использовать упорядоченный словарь, но это оказалось совершенно бесполезным, потому что он не может удерживать два предмета, имеющих одинаковое расстояние.
Использование списка и сортировки я из вопроса, так как удаление (O (п)) и найти минимальное также (O (п))
Все мне нужно, это простой общий красный черный древовидная структура, которая будет Сортировка по некоторому предикату, который я предоставил (чтобы сравнить расстояние внутри узла)
Есть ли такая структура данных в BCL?
О, я не знаю .. как насчет 'SortedList <>'? Я знаю, что имя неопределенное и запутанное;) http://msdn.microsoft.com/en-us/library/ms132319.aspx SortedDictionary можно использовать как список, и он имеет вложение и удаление O (log n). –
Вы попробовали класс SortedList? http://msdn.microsoft.com/en-us/library/system.collections.sortedlist.aspx –
Что вы хотите, это куча, и я не думаю, что BCL имеет встроенную систему, поэтому вам придется написать свое собственное или найти какую-то существующую реализацию. – Lee