簡體   English   中英

1維排序數組:KD樹與二進制搜索

[英]1 Dimensional sorted Array: KD-Tree vs Binary Search

我是否要驗證一下,如果:

  • 我有一個排序的一維數組。
  • 使用KD-Tree進行最近的鄰居搜索將始終與在該數組上使用二進制搜索一樣快。 (對於正常搜索,當然也是如此)
  • 范圍搜索也是如此(獲取范圍x..y中的所有元素)。
  • 我對KD-Tree可能擁有的唯一好處是頻繁插入/刪除數據。

通常已經要求使用二叉樹和N維,但是我想特別了解KD樹1維數據。

使用KD-Tree進行最近的鄰居搜索將始終與在該數組上使用二進制搜索一樣快。 (對於正常搜索,當然也是如此)

正確。 如果KD-Tree稍微退化了(通過更新操作),您的情況會更糟。

范圍搜索也是如此(獲取范圍x..y中的所有元素)。

正確。 一旦通過二進制搜索找到了大於x的最小值,您就可以掃描直到打到y。 在KD樹中,您將必須遍歷范圍內鍵所在的所有節點。

我對KD-Tree可能擁有的唯一好處是頻繁插入/刪除數據。

這取決於您的優勢。

與排序數組相比,KD-Tree中的插入和刪除速度更快。

但是,由於插入的KD樹會退化(如果僅使用基本的KD樹而不進行更新適應),則隨着插入/刪除次數的增加,在KD樹上的搜索將變得更慢。 二進制搜索將保持在O(log n)。

這不是您的問題,但是,如果您以1D模式操作,則很可能會同時使用兩全其美,這意味着“ 紅黑樹” ,“ B + -樹”或類似的東西。

暫無
暫無

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

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