有人知道如何在 LibreOffice Calc 中组织二进制搜索吗?
举一个简单的例子,假设我有 A 列,其中列出了按升序排列的数字 1-16:(1,2,3,...);B 列列出了小部件的名称;我想通过搜索 A 列中的数字来查找给定的小部件。很简单:=SEARCH(number;A1:A16;B1:B16)。但假设我的列表包含 1600 个数字,已排序,我需要与条目 992 关联的小部件名称。“搜索”必须经过 992 次迭代才能达到所需值。二进制搜索(如 Java)会将其减少到大约 10 次迭代。但这能做到吗?
据我所知,电子表格中的每个单元格基本上都是独立于其他单元格的,即使在单元格组内组织二叉搜索“树”,Calc 也会遍历每个单元格并根据给定单元格包含的公式计算其值 - 即使该单元格与搜索线程无关。
那么:二分查找可以实现吗?
我在 LibreCalc 工作表中构建了一个二叉搜索树。形式上,该树可以工作:从视觉上看,我得到了如下结果:
其中 (*) 表示显示“命中”的单元格内容。然而,这并不是真正的二分查找,因为 LibreOffice Calc 会详细查找所有单元格 - 比如 A、A1、A2 - 即使它们不在搜索路径(通过 (B)-(B1))上。