当使用 O(nlog(n)) 中值搜索时,构建 k-d 树 O(nlog^2n) 的时间复杂度如何?

问题描述

使用 O(nlogn) meidan 搜索构建 k-d 树的时间复杂度为 wikipedia 中的 O(nlog^2n)。谁能解释一下它是如何 O(nlog^2n) 的?

解决方法

使用中值搜索构建 kdtree 时,您会得到 balanced binary tree。平衡二叉树有height O(log(n))。在构建这棵树时,您可以在这棵树的每一层搜索中位数。所以如果这个搜索需要 O(n * log(n)),你会得到:log(n) * n * log(n) = n * log(n)^2。