gpt4 book ai didi

c++ - 恒定时间访问列表中的任意元素 (C++)

转载 作者:行者123 更新时间:2023-11-30 01:08:23 25 4
gpt4 key购买 nike

我目前正在研究一种算法的实现,我想证明它可以在恒定时间内工作,即使元素数量非常多。

不幸的是,我需要一个数据结构来存储元素。当元素的数量非常多时,但对于我的算法而言并非不合理的高,std::vector 和 std::valarray 都不会在恒定时间内访问任意元素 as you can see in this graph .

是否有更好的数据结构来存储这些值?是否有任何我可以实现的技术来实现恒定时间访问?

最佳答案

对于较高的 n 值,很可能是:

您遇到了缓存问题。在某些时候,每次内存访问都会错过缓存,从而导致更长的内存负载。

您正在遇到内存分页的缓存问题。现代计算机内存以树状结构组织。每个内存访问都通过该树,使每个内存访问 O(log n) 其中 n 是可寻址内存空间。你通常不会注意到它,因为那棵树的高度和良好的缓存。但是,对于非常高的 n 和随机内存访问,这可能会成为一个问题。

例如,我的一个 friend 证明了由于随机内存访问,计数排序算法具有 O(n log n) 时间复杂度。快速排序算法 - 作为比较 - 对内存的顺序访问非常好,并且分页开销要低得多。

底线是,您很可能会遇到架构/操作系统内存访问开销 - 除非您使用一些非常极端的方法(例如实现您自己的操作系统),否则您将无法克服这些开销。

关于c++ - 恒定时间访问列表中的任意元素 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42928989/

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