【发布时间】:2019-07-01 03:54:17
【问题描述】:
我正在尝试在二维数组列表中查找我正在查找的数字。但是,在搜索之前必须先对其进行排序。
当我尝试在二维数组中查找数字时,一切似乎都运行良好。这只是以仍然有效的方式对 2D 数组进行排序的事实。假设我想对一个 3x3 二维数组进行排序。它应该显示的方式是:
[[8, 27, 6],
[1, 0, 11],
[10, 9, 3]]
然后,我将使用二进制搜索方法通过已排序的 2D 数组查找一个数字。我的中间值将位于搜索数组的中间。
这只是一个示例,但是当我输入随机数字然后对行和列进行排序时,我想要完成什么。使用这个想法,我使用 Python 中的 random.randint() 库来随机化我的数字。然后,我试图在我的二维数组中进行排序,但在继续之前它并不是真正的排序。
n = 5
m = 5
def findnum_arr(array, num):
low = 0
high = n * m - 1
while (high >= low):
mid = (low + high) // 2
i = mid // m
j = mid % m
if (num == array[i][j]):
return True
if (num < array[i][j]):
high = mid - 1
else:
low = mid + 1
return False
if __name__ == '__main__':
multi_array = [[random.randint(0, 20) for x in range(n)] for y in range(m)]
sorted(multi_array)
排序:
[[0, 1, 3],
[6, 8, 9],
[10, 11, 27]]
应该是已排序的二维数组。是否可以用 sorted 函数分别对行和列进行排序?
【问题讨论】:
标签: python python-3.x sorting search 2d