【发布时间】:2023-07-29 13:50:01
【问题描述】:
我需要一个可以保存一组数字并尽可能快地对它们进行排序的数据结构。
我认为列表会很好,因为在列表中插入一个新数字会比向量更容易(这需要在插入后复制元素)。但是,遍历链表(我使用排序列表作为查找从 unordered_map 中获取对象)可能会慢得多,因为内存分散在整个堆中。
我在考虑使用地图,但是由于不连续性,这不会也有不好的内存访问吗?
静态分配的数组(有很多空白空间)和快速排序算法是我想到的另一个想法.....
回顾一下——我需要一个允许我插入新元素并尽快重新排序元素的数据结构。元素将是数字。
有什么帮助吗?
【问题讨论】:
-
请参阅this question,了解如何选择您的标准容器。
-
这很难回答,因为 fastest 不仅取决于 big-O 复杂性,还取决于常数项(即带有坏 big-O 的数据结构可能会胜过“较小”输入尺寸的“更好”)。只有具有真实数据的基准才能告诉您什么是“更好”,因为“小”通常可能非常大。
标签: c++ list sorting vector map