给定一个包含m
行和n
列的矩阵,其中每个条目由一对(a,b)
整数组成。矩阵中没有两对出现。
我们现在想订购这些对,这样对于同一行中的两对(a,b)
和(c,d)
,我们就知道对(a,b)
位于左侧(c,d)
当且仅当((a < c) or (a=c and b < d))
时,即该对是根据其条目按字典顺序排序的。此外,对于同一列中的两对(a,b)
和(c,d)
,当且仅当(a,b)
时,(c,d)
低于((b < d) or (b=d and a < c)
。
如果我们找到一个位置,使所有行和列满足上述条件,我们称之为稳定。
通过首先根据行条件对所有对进行排序很容易获得稳定的放置,这需要O(mn log(mn))
时间。然后将此列表拆分为m个部分p_1,...,p_m
(现在每个部分由n个元素组成,(a,b)
中的每个p_i
,(c,d)
中的p_j
它{{1} }})。现在,根据列条件对每个部分(a,b) < (c,d) if i < j
进行排序,每个部分需要p_i
,即所有部分都需要O(n log(n))
。将已排序的部分O(mn log(n))
写入列p_i
可以获得稳定的展示位置。
现在考虑特殊情况i
,m=n
。通过上述论证,我们得到了一个稳定的位置可以在时间N=n²
中获得,这给出了一个上限。现在这提出了一个问题:
这个问题的下限是多少? O(N log(N))
是最优的吗?