Algorithm n^2数组搜索算法

Algorithm n^2数组搜索算法,algorithm,search,Algorithm,Search,在排序数组中,我们可以通过二进制搜索在O(logn)中进行搜索。 但我认为在n*n数组中,我们如何将此算法(或其他)应用于数组以更快地搜索? n*n列表按如下方式对每行和每列进行排序 1 3 7 13 19 2 5 12 14 20 4 9 15 16 22 8 10 18 23 25 11 17 21 24 27 显然,最简单的解决方案是对每行(或每列)执行二进制搜索,这将导致运行时复杂性为O(n logn) 我在将二进制搜索直接应用于整个矩阵时看到的主要问题是没有

在排序数组中,我们可以通过二进制搜索在O(logn)中进行搜索。 但我认为在n*n数组中,我们如何将此算法(或其他)应用于数组以更快地搜索? n*n列表按如下方式对每行和每列进行排序

  1  3  7 13 19
  2  5 12 14 20
  4  9 15 16 22
  8 10 18 23 25
 11 17 21 24 27

显然,最简单的解决方案是对每行(或每列)执行二进制搜索,这将导致运行时复杂性为O(n logn)

我在将二进制搜索直接应用于整个矩阵时看到的主要问题是没有完整的排序。这使得很难定义“拆分元素”,其中“左侧”的所有元素都较小,“右侧”的所有元素都较大

我的直接适应方法更接近于四叉树这样的空间索引。基本观察结果如下:对于原始矩阵的每个子矩阵,可以通过查看左上角(下界)和右下角(上界)元素来定义元素的边界


现在,您基本上可以执行深度优先搜索,递归地将矩阵拆分为4个子矩阵,计算每个子矩阵的上下界,并根据键是否在其边界内丢弃或搜索它。

使用“分而治之”查找元素“在排序数组中,我们可以通过二进制搜索在O(nlogn)中搜索”->我想你的意思是O(logn)2D数组的排序准确程度如何?@Henry“每行都已排序,每列都已排序”。@SaiBot我很抱歉。你说得对。