- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 KD 树平衡一组(百万以上)3D 点,我有两种方法可以做到这一点。
方式一:
使用 O(n) 算法找到沿给定轴的数组大小/第 2 大元素并将其存储在当前节点
遍历向量中的所有元素,并针对每个元素,将它们与我刚刚找到的元素进行比较,并将较小的元素放入 newArray1,将较大的元素放入 newArray2
递归
方式二:
使用快速排序 O(nlogn) 沿给定轴对数组中的所有元素进行排序,取出位置 arraysize/2 的元素并将其存储在当前节点中。
然后将索引0到arraysize/2-1的所有元素放入newArray1,将arraysize/2到arraysize-1的元素放入newArray2
递归
方法 2 似乎更“优雅”,但方法 1 似乎更快,因为中值搜索和迭代都是 O(n),所以我得到 O(2n),它只是减少到 O(n)。但是同时,虽然方式2是O(nlogn)的时间来排序,但是把数组拆分成2可以在常数时间内完成,但是是否弥补了O(nlogn)的排序时间呢?
我该怎么办?还是有我什至没有看到的更好的方法来做到这一点?
最佳答案
方式三如何:
使用诸如 QuickSelect 之类的 O(n) 算法来确保位置 length/2 处的元素是正确的元素,之前的所有元素都小于它,而之后的所有元素都大于它(无需对它们进行完全排序! ) - 这可能是您在方法 1 的第 1 步中使用的算法...
递归到每一半(中间元素除外)并重复下一个轴。
请注意,您实际上不需要制作“节点”对象。您实际上可以将树保存在一个大数组中。搜索时,从第一个轴的 length/2 开始。
我已经看到 ELKI 使用了这个技巧。它使用非常少的内存和代码,这使得树非常快。
关于performance - 平衡 KD 树 : Which approach is more efficient?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17021379/
Under the push parsing approach, a push parser generates synchronous events as a document is parsed,
我刚刚开发了一个 Android 应用程序(minSdkVersion 23/targetSdkVersion 29),可以连接到 BluetoothLE 设备以定期获取数据。 现在,在 MainAc
我现在编程了一段时间(初学者),递归函数对我来说是一个有点抽象的概念。我不会说我卡住了,程序运行良好,我只是想知道是否可以在代码中没有 pow 函数的情况下编写函数本身(但仍然完全按照问题的建议进行操
http://www.codechef.com/OCT14/problems/PRLADDU 这是当前的运行比赛。 我不想要它的答案,只是让我知道我的方法是否正确。 我遵循的方法是按交换方式添加人和恐
我是Python线程的新手,作为我写的第一个任务: from twitterHandler import Twitter_User from text_analyzer import text_ana
我不是 DBA,我不知道什么是最好的解决方案。我有两个表, Custumers Table CustomerId (primary key, identity) ... 和 Suppliers Tab
我对Spring和Apache Tika集成感兴趣。 这种方法是线程安全的吗? 我可以从不同的线程安全地调用detect()方法吗? 是否有任何Spring-Tika集成模式? 提前致谢。 最佳答案
这听起来可能是一个新手问题,但我是 iOS 开发新手。 我在我的项目中跟踪了代码,该项目启用了 ARC,但我在执行时遇到错误(访问错误),并且想了解问题的原因并解决它。 按下某些按钮后,将在 MTCl
自从 AsyncTask 自2009年在Cupcake(API 3,Android 1.5)中引入以来,它一直被Android团队一如既往地推广: “Painless threading” “an e
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我一直在为这个 leetcode 问题绞尽脑汁。想知道是否有一种实用的方法可以解决这个问题。我能想到的就是使用可变对象(在 Scala 中)。 给定一个表示为数字链接列表的非负整数,该整数加一。 存储
我一直在为这个 leetcode 问题绞尽脑汁。想知道是否有一种实用的方法可以解决这个问题。我能想到的就是使用可变对象(在 Scala 中)。 给定一个表示为数字链接列表的非负整数,该整数加一。 存储
我正在考虑编写一个函数,该函数使用 calloc 创建一个数组来容纳文件中的数据(目前以字符形式)。据我了解,我的两个最明显的选择是读取所有字符以获得所需的总大小,使用 calloc 分配所需的空间,
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我必须准备一个包含很多字段(大约 100 个)的表单。我可以使用一个大的 HTML\PHP 文件,但为了提高可访问性和轻松访问字段,我宁愿使用选项卡菜单。原始表格(称为临床评估)在逻辑上可以分为 3
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 7 年前。 Improve
我想获取所有带有 编辑:如果您不想显式定义 for 循环和 if 语句,请尝试使用 .filter() 和 .match( ): var arr = ["cat", "apple", "window
我正在寻找一种 dojo 工具包方法来跨 iFrame 进行通信。与此处显示的 Julien Lecomte 的 CrossFrame 技术类似的东西 http://www.julienlecomte
问题 我想实现TransparencyChecker Interface,它将验证网络中的任何交易所是否都可以使用来自其他交易所的所有交易信息。 问:TransparencyChecker Infer
我有一个类 ClassA,它调用另一个类(DAO)来获取查询结果。在特定的业务场景下, ClassA 使用查询参数调用 DAO 大约 20,000 次。其中,ClassA 向 DAO 发送了大约 10
我是一名优秀的程序员,十分优秀!