2013-04-23 76 views
0

我读C.Here一个kd树实现后援问题的某些部分是findmedian function.I不明白的KD树 - 难以理解的指针

*md = start +(end-start)/2; 

实施.. .... - 代码

struct kd_node_t 
{ 
    double x[3]; 
    struct kd_node_t *left, *right; 
}; 
struct kd_node_t* findmedian(struct kd_node_t *start, struct kd_node_t *end, int idx) 
{ 
...... 
struct kd_node_t *p, *store, *md = start + (end - start)/2; 
...... 
} 
+0

差=它们之间 – 2013-04-23 17:20:04

+0

元素个数中位数不在节点的中间位置?开始+(结束 - 开始)/ 2给你的确如此。 – 2013-04-23 17:20:09

+0

开始+(端开始)/ 2 ==启动+长度/ 2 = START +中间 – Mariano 2013-04-23 17:23:17

回答

1

嗯,这是怎么实现>其他无关的线条startend只是“两个指针之间的一半”。如果实现需要照顾,有一个有意义的值在存储这个位置(这可能是中位数),那么你是幸运的,否则你会得到两个指针的垃圾......

+0

我不认为这是happening.Just看到http://rosettacode.org/wiki/K-d_tree#C的find_median代码。谢谢 – 2013-04-23 17:34:52