簡體   English   中英

線性搜索或二進制搜索或二進制搜索樹

[英]Linear Search or Binary Search or Binary Search Tree

我在這里有點懷疑...

如果我知道列表中的搜索元素(例如包含按順序排序的32個元素)出現在前四個位置中,

這是最好的搜索算法。

線性搜索至少需要4次迭代...。二進制搜索至少5次迭代二進制搜索樹..在這種情況下,它是否提供更好的解決方案,或者等於二進制搜索...

我相信線性搜索在這種情況下會更好。

有人可以確認嗎?

如果您知道位置在前4個位置,則線性搜索會比線性搜索更好,因為您必須測試不超過4個元素。 使用二進制搜索lg 32 = 5,因此您最多必須測試5個元素。

另外,對於這樣的少量元素,時間差可以忽略不計,並且保持簡單並進行線性搜索可以為您提供最好的服務。

您也許還可以使用HashTable或HashSet進行O(1)時間,但是同樣,對於少量數據,線性搜索可能比執行哈希函數要快。

而且,如果細微差別確實很重要,我建議在將要運行的環境中對其進行測量。

您可以對前4個元素進行二進制搜索。 這將是lg 4 = 2次迭代! :-)

有了那么多的元素以及您手頭上的確切應用,二進制搜索樹將是一個過大的殺傷力。

同樣,對於解決目前存在的問題,線性搜索會更好,因為定位特定元素的預期迭代次數將超過二進制搜索。

對於現實生活中的情況,所出現的問題將非常罕見。 因此,最好對已排序的數組使用Binary Search。

如果數據以某種方式均勻分布,則使用插值搜索是明智的。 通過使用分配知識,您有很大的機會一步一步猜出正確的位置。 預期的復雜度為O(log(log(n())))。

這是我的頁面的鏈接,其中有用 Java實現的算法: Algoritmy.net-插值搜索實現

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM