在任何编程语言中的文件上执行任何(读取 / 写)操作,具体位置应该导航文件,然后使用读取 / 写模式处理它。考虑一个 N 行大小的文件,这需要一个循环来读取每一行,从而导致循环重复 N 次。阅读文件的复杂性结果是 O(N)。
是否有任何算法可以读取' N' log(N)时间内的行。?
答案 0 :(得分:0)
这绝对取决于文件系统功能;例如,在FAT32文件系统中,形成文件的磁盘扇区的数量存储为链表,因此需要线性时间(尽管有一个相当小的常量)甚至到达文件的末尾。
除此之外,它取决于我们是否事先知道线的长度。否则,在一般情况下不太可能:文件中我们不读取的每个位置都可以包含换行符或不包含换行符。
另一方面,例如,如果所有行具有预先已知的相同长度,并且文件系统允许在次线性时间内访问文件中的任意位置,则整个问题也可以在该次线性时间内解决。