【发布时间】:2013-06-21 06:00:02
【问题描述】:
我有一个元素列表,我需要为每个元素创建一个由位组成的签名。我最终会得到一个位向量列表。之后,我需要按字典顺序对该位向量列表进行排序。之后,我需要在已排序的向量列表中搜索位向量。
我发现如果我将签名表示为字符串,则排序将花费 O(N),使用二进制搜索进行搜索将花费 O(M logN),其中 M 是字符串签名的长度。
但我发现对于一般的数字,排序需要 O(n LogN) 并且使用二分搜索进行搜索需要 O(logN)。
我的问题是如何在java中表示位向量,以便我可以按字典顺序排序并达到与一般处理数字相同的性能?
我最关心的是使用二分搜索实现 O(logN) 搜索时间,因为有人在一篇论文中声称可以实现这一点,但没有提供任何线索。
【问题讨论】:
-
排序永远只需要
O(log n)。该声明中的复杂性是否颠倒了? -
@HunterMcMillen 这是一个非常不合格的声明。如果我们在初始列表上引入约束,甚至可能需要 O(1)。
-
@HunterMcMillen 我修好了
-
我知道您希望我更具体地说明我的主张,但显然手头的问题涉及未排序的元素。
-
@MarkoTopolnik 我理解你的意图,我只是好奇确实存在什么限制,因为我从来没有遇到过。
标签: java algorithm sorting search