[英]1 Dimensional sorted Array: KD-Tree vs Binary Search
我是否要驗證一下,如果:
通常已經要求使用二叉樹和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.