摘要:
看Kd树时,建立Kd-tree需要为第split维的值排序,并查找位于正中间的那个数据点。询问了好多同学,他们说,可以首先用堆排序,然后找第(n-1)/2的数。觉得挺有道理。但是,还看到一种方法,就是Rank_Select方法。代码如下:Rank_Select方法static void insertion_sort( double* array, int n ){ double k; int i, j; for( i = 1; i < n; i++ ) { k = array[i]; j = i-1; while( j >= 0... 阅读全文
posted @ 2011-11-08 16:34
Ming明、
阅读(2362)
评论(1)
推荐(0)
摘要:
Kd-树 其实是K-dimension tree的缩写,是对数据点在k维空间中划分的一种数据结构。其实,Kd-树是一种平衡二叉树。举一示例:假设有六个二维数据点 = {(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)},数据点位于二维空间中。为了能有效的找到最近邻,Kd-树采用分而治之的思想,即将整个空间划分为几个小部分。六个二维数据点生成的Kd-树的图为:对于拥有n个已知点的kD-Tree,其复杂度如下:构建:O(log2n)插入:O(log n)删除:O(log n)查询:O(n1-1/k+m) m---每次要搜索的最近点个数一 Kd-树的构建Kd-树是一个二叉树,每 阅读全文
posted @ 2011-11-08 15:53
Ming明、
阅读(22517)
评论(17)
推荐(4)
浙公网安备 33010602011771号