我的应用程序有一个关键部分,包括获取数据源(无序),然后按顺序对每个元素执行算法。实际上我遵循下一个算法:
我看到地图可能不是最好的数据结构,因为我只需要将数据添加到排序列表中然后完全“刻录”列表(同样,内存分配在移动设备上也很昂贵,所以我会我喜欢自己做。)
我做了一些研究,我正在阅读像B树和黑红树这样的东西。它们可能就是我要搜索的内容,但我会在这里询问是否有人知道一个方便该任务的数据结构。
简而言之,我想要一个结构:
快速插入也比快速迭代更重要(我的分析师这样说:D)。
谢谢大家。
答案 0 :(得分:2)
至少有两种有效的解决方案:
向量具有O(N)加载时间(对于priority_queue对O(N log N))的优点。 (注意,由于排序,它总是需要O(N log N)。
priority_queue具有在耗尽内存时释放内存的优势。这不会减少最大内存占用,并且可能带来微不足道的好处,但无论如何都值得尝试。
答案 1 :(得分:2)
理论上更好的方法是使用heapsort。
但是,实际上,最快的方法是将元素附加到矢量,然后使用快速排序对它们进行排序。
在这两种情况下,平均需要O(N * log(N)),但快速排序具有最低的常数因子。
答案 2 :(得分:0)
我建议写一个skip list。这正是您所要求的 - 带有O(log(n))
插入的排序列表。它也相对容易实现。
答案 3 :(得分:0)
如果您的密钥值有限,您可能需要考虑使用Bucketsort。