摘要:
1 数据结构(从百度粘贴过来,依旧很乱很乱)数据结构是在整个计算机科学与技术领域上广泛被使用的术语。它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。数据结构有逻辑上的数据结构和物理上的数据结构之分。逻辑上的数据结构反映成分数据之间的逻辑关系,而物理上的数据结构反映成分数据在计算机内部的存储安排。数据结构是数据存在的形式。一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来的。对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;此外讨论一个数据结构必须同时讨论在该类数据上执行 阅读全文
摘要:
看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... 阅读全文
摘要:
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-树是一个二叉树,每 阅读全文