我什至都不是CS学生,所以这可能是一个愚蠢的问题,但是请忍受...
在前计算机时代,我们只能用抽屉数组来实现数组数据结构。由于一个有定位与从它提取值之前对应的索引的抽屉,阵列查找的时间复杂度是,假设二进制搜索。
但是,计算机的发明产生了很大的变化。现代计算机可以如此快速地从其RAM中读取数据,因此我们现在认为数组查找的时间复杂度为(即使从技术上讲也不是这种情况,因为将寄存器移至更远的距离需要花费更多时间,等等)
另一个例子是Python字典。虽然人们可能会得到一本字典访问的复杂性与病人写重载魔术方法(或可笑的坏运气,即具有大量的散列冲突的键),它通常被认为是Ø (1 )。在这种情况下,时间复杂度既取决于Python字典的哈希表实现,也取决于哈希函数的键的实现。__hash__
这是否意味着硬件/实现会影响算法的时间复杂度?(虽然这两个示例都是关于数据结构而不是算法,但后者是建立在前者之上的,而且我从未听说过数据结构的时间复杂性,因此在这里我使用术语“算法”)
对我来说,算法是抽象的和概念性的,它们的属性(例如时间/空间复杂度)不应受到是否以特定方式实现而受到影响,但它们是吗?