C++ 从文件中以次线性时间获取输入

C++ 从文件中以次线性时间获取输入,c++,C++,我有一个节点列表(字符串、值)。我可以在次线性时间扫描它吗。此外,我需要对其进行处理,以便在子线性时间内完成对字符串的每个搜索查询。 如果次线性意味着小于O(n)或者它是O(n),还有谁能更具体一点吗?我使用的CPP扫描通常意味着“读取每一项(在某些情况下,通常是预定义的顺序)”。如果读取每个项目,则至少执行线性数量的读取下一个项目操作。我们假设该操作需要一些时间,通常是恒定的,有时等于或大于某个最小时间,因此执行扫描需要的时间至少与处理的项目数(列表长度)成比例 因此答案是否定的,你不能在次线

我有一个节点列表(字符串、值)。我可以在次线性时间扫描它吗。此外,我需要对其进行处理,以便在子线性时间内完成对字符串的每个搜索查询。 如果次线性意味着小于O(n)或者它是O(n),还有谁能更具体一点吗?我使用的CPP扫描通常意味着“读取每一项(在某些情况下,通常是预定义的顺序)”。如果读取每个项目,则至少执行线性数量的读取下一个项目操作。我们假设该操作需要一些时间,通常是恒定的,有时等于或大于某个最小时间,因此执行扫描需要的时间至少与处理的项目数(列表长度)成比例


因此答案是否定的,你不能在次线性时间内做到这一点,除非你的机器能够动态地复制自己,并将数据分割成各个子代机器处理的部分。即使如此,无论数据大小如何,分割都必须在恒定的时间内完成,否则分割开销很容易会消耗掉所有的节省。

使用次线性是什么意思?如何在次线性时间内扫描列表?O(n)是线性的,所以我猜次线性意味着比它快的任何东西,例如常数,但我想知道如何在常数时间内扫描列表…好吧,O(log(n))你也可以称为“次线性”…@tobi303…但是读取
n
项需要
n
操作,不是吗?@CiaPan是的,这就是为什么我不明白他所说的“在次线性时间内扫描它”是什么意思。“次线性”的意思是“严格地优于线性(即O(n))”。(“sub”表示“在下”或“在下”。)你不能在不查看每个项目的情况下扫描列表,这使得列表的大小呈线性。支持在次线性时间内查找的结构是众所周知的(二叉树、哈希表等)。