Python 中的 heapq,打印行和列排序矩阵中按排序顺序排列的所有元素
给定一个 n×n 矩阵,其中每一行和每一列按非递减顺序排序。按排序顺序打印矩阵的所有元素。
示例:
Input : mat= [[10, 20, 30, 40],
[15, 25, 35, 45],
[27, 29, 37, 48],
[32, 33, 39, 50]]
Output : Elements of matrix in sorted order
[10, 15, 20, 25, 27, 29, 30, 32,
33, 35, 37, 39, 40, 45, 48, 50]
此问题已有解决方案请参考链接。我们将在 python 中使用合并两个排序数组的相同方法,使用 heapq 模块 来解决这个问题。
# Function to print all elements in sorted order
# from row and column wise sorted matrix
from heapq import merge
def sortedMatrix(mat):
# initialize result variable with first row of matrix
result=mat[0]
# now traverse through complete matrix
# after first row and merge each row with
# result one by one
# after last operation result will contain
# list of sorted elements of matrix
for row in mat[1:]:
result=list(merge(result,row))
return result
if __name__ == "__main__":
mat = [[10, 20, 30, 40],
[15, 25, 35, 45],
[27, 29, 37, 48],
[32, 33, 39, 50]]
print ('Elements of matrix in sorted order')
print (sortedMatrix(mat))
输出:
Elements of matrix in sorted order
[10, 15, 20, 25, 27, 29, 30, 32, 33, 35, 37, 39, 40, 45, 48, 50]
本文由 沙莎克·米什拉(古卢) 供稿。如果你喜欢 GeeksforGeeks 并想投稿,你也可以使用contribute.geeksforgeeks.org写一篇文章或者把你的文章邮寄到 contribute@geeksforgeeks.org。看到你的文章出现在极客博客主页上,帮助其他极客。
如果你发现任何不正确的地方,或者你想分享更多关于上面讨论的话题的信息,请写评论。
版权属于:月萌API www.moonapi.com,转载请注明出处