二进制搜索算法具有大的O值O(log n),并且顺序搜索具有大的O值O(n)。但是我们在二元搜索之前需要排序算法,而排序算法的最大O值是O(n.log n)。因此,有效地,二进制搜索的大O值是O(n.log n),其大于顺序搜索的O值。那么,哪一个更适合作为搜索算法?
答案 0 :(得分:3)
实际上,这取决于您搜索的频率。如果必须搜索数百万次,则需要二进制搜索,即使您必须支付排序的前期成本。这取决于您的使用案例。使用二进制搜索,您还可以确保插入对列表进行排序,因此它们也会变慢。
如果您需要进行大量插入操作,搜索次数非常少,则顺序搜索可能会更快。
请记住,在您使用很多数据之前,很多事情都不会引人注意。
答案 1 :(得分:2)
在优化的应用程序中,顺序搜索几乎很少使用。因为找到合适的数据结构通常要好得多,然后使用在 O(n)中提供常用搜索的数据结构。
例如,red-black tree是一种特殊的平衡二叉树,它在 O(log n)中提供插入/删除/搜索。所以创建,填写和搜索都很快。