我只是想确认一下我的答案,看看是否有更快的方法。
如果有一个已排序的nxn矩阵,那么搜索它的最佳方法是什么?它的复杂性是多少? - 二进制搜索行,然后二进制搜索列。 O(logN)的
如果有一个带有排序行和未排序列的nxn矩阵,那么搜索它的最佳方法是什么?它的复杂性是多少? - 二进制搜索行,然后线性搜索列。 O(N)。
答案 0 :(得分:1)
定义矩阵的排序方式,并定义要搜索的内容。也许添加一个例子。
为了更清楚,这是排序(1):
1 6
4 5
或者这是排序的(2):
1 4
5 6
而且,你对搜索意味着什么?您想在整个矩阵(a)中找到单个值,每行(b)中的单个值,还是每行(c)中的不同值?
对于(1)(a),它是n * log(n)(n次搜索,每行一次)
对于(2)(a),它是log(n)(将其视为一个大行,因此log(n * n)=> log(n ^ 2)=> 2 * log(n)= > log(n)
对于(1)(b),它是n * log(n)(n次搜索,每行一次)
对于(2)(b),它是log(n)
对于(1)(c),它是n * log(n)(n次搜索,每行一次)
对于(2)(c)它至少是n * log(n),但可能你可以对这些值进行排序并使用预先排序的矩阵在log(n)或log(n)* log中完成它( n),这需要进一步分析
一切都没有证明,只是基于一些基本的想法。