本帖最后由 vectra 于 2015-1-31 20:10 编辑
问题提出见原贴 http://bbs.mjtd.com/thread-112884-1-1.html
逐一检测的时间复杂度是O(n^2),当n较大时,时间开销不能接受。
采用分治方法,先将对象按X坐标排序,并对对象进行分组,每次只对在X坐标正负指定间距内的对象逐一检测,时间复杂度接近O(n)
命令: tt
构建点实体表 9202个对象 (297 ms)
两次循环 (34093 ms)
命令: TT2
构建点实体表 9202个对象 (140 ms)
排序 (31 ms)
完成符合条件的对象标记 (766 ms)
命令: tt2
构建点实体表 31598个对象 (563 ms)
排序 (109 ms)
完成符合条件的对象标记 (2719 ms)
命令: TT2
构建点实体表 46010个对象 (1907 ms)
排序 (203 ms)
完成符合条件的对象标记 (5781 ms)
命令: TT2
构建点实体表 55212个对象 (2266 ms)
排序 (250 ms)
完成符合条件的对象标记 (6281 ms)
通过测试发现,E3 1230V2上每秒可处理近1万个对象。
|