2012-08-27 82 views
4

二進制搜索算法具有O(log n)的大O值,並且順序搜索具有O(n)的大O值。但是在二分搜索之前我們需要排序算法,排序算法的最大O值是O(n.log n)。因此,有效地,二進制搜索的大O值是O(n.log n),這大於順序搜索的O值。那麼,哪一個是搜索算法的首選呢?哪種搜索算法更喜歡?

回答

3

實際上取決於您搜索的頻率。如果您必須搜索數百萬次,則即使您必須支付分類的前期成本,也需要進行二分搜索。這取決於你的用例。使用二進制搜索,您還可以確保插入操作可以保持列表的排序順序,因此它們也會變得更慢。

如果你需要做很多插入操作,而且只有很少的搜索,順序搜索可能會更快。

請記住,很多這些甚至不會引起注意,直到您使用很多的數據。

2

順序搜索實際上很少用於優化的應用程序。因爲找到合適的數據結構通常要好得多,然後使用在O(n)中提供經常使用的搜索的數據結構。

例如,red-black tree是一種特殊的平衡二叉樹,它提供在O(log n)中的全部插入/刪除/搜索。所以創建,填寫和搜索都很快。