读取和乘以排序矩阵

时间:2014-05-21 17:50:06

标签: algorithm sorting matrix

我在两个大小为NxN的排序矩阵上遇到了一些问题。 即,对矩阵进行排序,使得每一行和每一列按升序排序。我的任务是首先读取两个矩阵然后乘以它们,这应该产生另一个排序的方阵。在这个结果矩阵中,我必须搜索一个元素,但问题是时间复杂度限制为O(n^2(lgn)),而典型的乘法算法约为O(n^3)

如何同时查找动态正确值的元素?谁能帮我解决这个问题?我已经挣扎了一个星期左右,我仍然没有看到一个很好的解决方案。

我真的很感谢你的任何帮助!

祝你好运!

1 个答案:

答案 0 :(得分:1)

可以在O(N)时间内搜索已排序矩阵中的元素。

1. Start from lower left corner of the matrix A[N-1][0] (i = N-1, j = 0).  
2. If element is > A[i][j], go right (increment j).  
3. If element is < A[i][j], go above (decrement i).  
4. If element is == A[i][j], Stop with success.  
5. If i < 0 or j == N, Stop with failure.

现在,您要在矩阵中搜索元素,该矩阵是两个已排序矩阵的乘积。

IMO可以在整个O(N^2)时间内完成!

只需应用上述搜索算法并即时计算矩阵元素。计算每个元素需要O(N)时间,因为您将一行与一列相乘。因此,算法的整体复杂性应为O(N^2)