• 请不要在回答技术问题时复制粘贴 AI 生成的内容
begeekmyfriend
V2EX  ›  程序员

kNN 算法的 kd 树实现( C 源码)

  •  1
     
  •   begeekmyfriend ·
    begeekmyfriend · Feb 22, 2017 · 2773 views
    This topic created in 3392 days ago, the information mentioned may be changed or developed.
    https://github.com/begeekmyfriend/kdtree

    特点:绝对平衡,搜索极快,代价是动态性差,每次增删后需要重建。

    实现是对增删进行缓存,直到重建才映射到实际数据结构中去。重建会对每个维度分量进行快速排序,以确保每个树节点都是取中值,实现了绝对平衡,也即最小高度,最大限度降低搜索比较次数,杜绝最差情况发生。

    注意,排序只是对数据样本的索引进行移动,数据本身插入时只拷贝一次,数据样本集中缓存有利于 cache 命中。

    有兴趣欢迎探讨。
    5 replies    2017-04-20 18:10:58 +08:00
    y8y
        1
    y8y  
       Feb 22, 2017
    我是第一个赞的,楼主的 C 代码看起来很舒服。
    zgqq
        2
    zgqq  
       Feb 22, 2017 via Android
    大佬
    franklinyu
        3
    franklinyu  
       Feb 23, 2017
    除了「 for(; ;)」和「 8 個空格縮進」屬於口味不同以外,樓主的代碼簡直是一股清流……
    congeec
        4
    congeec  
       Feb 23, 2017 via iPhone
    正规军
    wujunze
        5
    wujunze  
       Apr 20, 2017
    👍
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3746 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 76ms · UTC 04:36 · PVG 12:36 · LAX 21:36 · JFK 00:36
    ♥ Do have faith in what you're doing.