我想查找字符串有一个特定的短字符串数组或链表。我使用c ++制作了一个小型程序,用于搜索http://dblp.uni-trier.de/会议或研讨会。我想知道如何快速搜索数组或链表中的字符串。当使用string.find()函数时,我认为如果数组的长度为n,则该函数的性能具有O(n)时间复杂度。我可以提高性能低于O(n)??请帮帮我
答案 0 :(得分:0)
对于一个数组,除非它被排序,你可以做的最好的是O(n)平均/最差情况,因为你必须线性地看,直到你找到所需的字符串。如果它被排序(这将需要O(nlog(n))来进行排序),你可以使用二进制搜索进行O(log(n))搜索。对于链表,无论排序如何,您可以做的最好的是O(n)。
答案 1 :(得分:0)
如果您确实希望使代码复杂化,则在每个插入列表中存储指向某个平衡树中节点的指针。将根据该节点比较的字符串插入节点。然后你可以在O(logn)时间内获得字符串。
如果你想快速检索使用哈希映射,它会给你O(1)时间。