algorithm - 从数组或哈希表访问元素的运行时间是多少?它与查找或搜索有何不同?

标签 algorithm optimization complexity-theory binary-search computation-theory

在对计算算法运行时间的完全理论分析中; 如果我想在我的伪代码中包含一行涉及搜索数组中的值或给定键的哈希表的值,我应该假设此操作的运行时间是多少?例如,如果我之前存储了 A[3] = 6 并且我调用 A[3] 来检索 6,那么此操作的运行时间是否为 O(1)?或者它会被认为是使用某种最佳搜索算法的搜索操作并且是 O(log n),其中 n 是 A 中的元素数?

最佳答案

假设我们谈论的是普通整数索引数组,存储在单个连续内存块中,对其进行索引通常是通过一次加法执行的,从而使访问恒定时间。

http://en.wikipedia.org/wiki/Array_data_structure#Efficiency

同样,哈希表通常提供常量时间访问,尽管该常量几乎可以保证比数组索引的常量大,因为哈希表更复杂并且通常构建在数组之上。合理的散列函数本身需要的远不止一次加法操作。

http://en.wikipedia.org/wiki/Hash_table#Performance_analysis

关于algorithm - 从数组或哈希表访问元素的运行时间是多少?它与查找或搜索有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16868988/

相关文章:

python - Python 列表是单链表还是双向链表?

algorithm - 空间复杂度问题

c - 使用 fread() 通过文件和标准输入解析数据

c - 地址值更改不会反射(reflect)在 while 循环中

mysql - 通过存储 absolute_url 消除 django 中额外的 DBQueries

c - 拼图 : Sort an array of 0's and 1' s in one parse.

optimization - 帧指针优化的使用

c++ - 从数组中提取数字的高效算法

c# - 如何合并连续的时间段?

c++ - 二进制搜索是否具有 deque C++ 数据结构的对数性能?