c++ - 对一组数字进行排序最快的数据结构(和排序算法)是什么?

标签 c++ list sorting vector map

<分区>

我需要一个数据结构来保存一组数字并尽快对它们进行排序。

我认为列表会更好,因为向列表中插入新数字比 vector 更容易(后者需要在插入后复制元素)。但是,遍历链表(我使用排序列表作为从 unordered_map 中获取对象的查找)可能会慢得多,因为内存分散在整个堆中。

我正在考虑使用 map ,但由于不连续的性质,这不会也有不好的内存访问吗?

静态分配的数组(有很多空白空间)和快速排序算法是我想到的另一个想法......

总而言之,我需要一个数据结构,它允许我插入新元素并尽快对元素重新排序。元素将是数字。

感谢任何帮助?

最佳答案

最快的数据结构是数组 - 连续的内存区域,最适合缓存。

排序取决于。将快速排序与用于对小于特定大小的子数组进行排序的插入排序相结合可能是最好的选择,而无需求助于更深奥的东西。

关于c++ - 对一组数字进行排序最快的数据结构(和排序算法)是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19177987/

相关文章:

java - 在 Java 中,在多线程程序中保留前 100 项的最佳方法是什么?

JavaScript 数组对象排序未按预期工作

c++ - 解决这个问题最省时的方法是什么?

c++ - 虚拟调试类卡在 std::endl 重载上

C++Builder 2007, union 和位字段

java - 使用JAVA形成测试数据列表进行selenium功能测试

python - 将嵌套字典列表转换为平面字典列表

javascript - 如何在下拉列表中按字母顺序对数组进行排序

c++ - 在 C++ 中,多个线程对数组的各个单元格的修改是安全的(boost)

python - 查找字典列表的总和