问题标签 [bisect]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
31 浏览

python - 在已打开文件的排序行中进行二分搜索(未加载到内存中)

我有一个多千兆字节的文本文件,数百万行已排序:

在不将整个文件加载到内存的情况下,如何通过二等分搜索来搜索是否存在一行?(可能在 O(log n) 的行数中)

Python库bisect.bisect_left中的文件行中是否有类似的功能?f = open('file.txt', 'r')

该窗口最初是[a, b] = [0, file_size]. 然后它会在文件中查找位置m=(a+b)/2,查找下一\n行,然后读取以下行l。如果要搜索的模式小于或大于l(按字典顺序),那么我们继续[m, b]or [a, m]。在我自己动手之前,这在 Python 中是否存在?