我正在尝试解决二维数组的问题,但几乎不需要帮助。问题是这样的:
假设我们有一个大小为 nxn 的二维数组 A,由唯一元素组成。需要按如下方式重新排列 A 的元素。设 A11、A12、A21、A22 是 A 的四个相互不相交的子数组,每个子数组的大小为 n/2 x n/2。那么 A11 < A12 < A21 < A22。如果每个子数组都递归地分成四个大小相等的子数组,则该属性也成立。
用户输入:n,N(≥ n2)。 n 是 2 的幂
我尝试了很多方法,但似乎没有任何效果。
最佳答案
您需要创建一个函数,根据相关顺序将 0 到 n*n-1 之间的索引转换为数组中的坐标。然后,您只需在大小为 n*n 的数组上运行一些常用的一维排序算法,其中的第 j 个元素将使用该函数进行替换。它解决了问题。
更新:映射函数将此矩阵中的数字映射到它们的坐标:
0 1 4 5
2 3 6 7
8 9 12 13
10 11 14 15
关于c - 二维数组的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6883349/