我有一个Text
s 列表,它们按排序顺序排列。elem
在我看来,我可以通过将其实现为二进制搜索而不是线性搜索来编写更快的版本。这样的版本是否已经存在?
问问题
2064 次
3 回答
6
二进制搜索需要随机访问。由于 haskell 列表不提供随机访问(访问中间的元素需要线性时间),所以二分查找没有帮助。
如果您的数据位于Array
提供随机访问的 中,则二进制搜索将是可行的。
于 2012-04-17T09:12:00.673 回答
1
我有一个文本列表,它们按排序顺序排列。
改变数据结构,你的算法就会很明显(用布鲁克斯的话说)。
Haskell 尤其如此,我们的数据结构通常不是可变数组(这意味着您不会依赖指针黑客攻击)。
如果您使用例如堆或树来存储文本,您将能够轻松实现O(log(n)) elem。您可以利用它们已排序的事实来提供更快的插入。
于 2012-04-17T11:48:19.243 回答