gpt4 book ai didi

c# - 在 .Net 中实现优先级数组集合的最快(插入速度)方法是什么?

转载 作者:行者123 更新时间:2023-11-30 13:50:37 26 4
gpt4 key购买 nike

我正在编写一个特定的优先级队列。它的结构需要如下所示:

Priority(<int>)    Data(List<Object>)
1 a, b, g, h
3 c, d, j
4 k
10 e, f, i

我需要能够高效地找到给定优先级的列表是否存在;如果没有,则创建列表并添加消息,否则将消息附加到现有列表。

我已经写了一个红黑树,但这似乎有点矫枉过正,而且可能不是最快的解决方案。它还具有无法按优先级轻松抓取消息的缺点,我需要在写入完成后才能做到这一点。

我想到了 Dictionary,但除非我弄错了,否则它没有简单的方法来表示“如果键 __ 存在,给我对应的值,否则给我 null”。还是我遗漏了什么?

编辑

我目前的实现是有 32 个固定列表。将适用列表添加到 32 位标志中并设置适用位。我使用 De Bruijn 的算法来获取 LSB。这很有效,但增加了我想减轻的其他复杂性。

最佳答案

也许你应该使用 Dictionary<int,List<object>>

public void Add(int priority,object data)
{
if(dictionary.ContainsKey(priority))
dictionary[priority].Add(data);
else
dictionary.Add(priority,new List<object>{data});
}

关于c# - 在 .Net 中实现优先级数组集合的最快(插入速度)方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6001403/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com