Python程序:对2D数组进行列排序
当声明一个二维数组或2D数组时,它被作为矩阵进行处理。所以,我们知道矩阵由行和列组成。将矩阵特定列中的元素(按升序或降序)排序的过程称为对2D数组进行列排序。让我们考虑一下遵循输入输出方案的算法,以了解该概念的确切应用。
输入输出方案
考虑一个二维数组。
arr = [[ 7, 9, 5, 7 ], [9, 5, 9, 4], [2, 7, 8, 6], [ 8, 6, 6, 5]]
上述二维数组的矩阵表示如下 –
7 9 5 7
9 5 9 4
2 7 8 6
8 6 6 5
现在,让我们按降序对特定矩阵列排序。
- 第一列由元素7, 9, 2和8组成。元素7,9,2和8的降序排列为9,8,7和2。
-
第二列由元素9,5,7和6组成。元素9,5,7和6的降序排列为9,7,6和5。
-
类似地,第三和第四列也被排序了。
-
按列降序排序的排序矩阵为
9 9 5 7
8 7 9 6
7 6 8 5
2 5 6 4
- 排序矩阵的数组表示为
[[9, 9, 9, 7 ], [7, 7, 8, 6], [8, 6, 6, 5], [ 2, 5, 5, 4 ]]
- 这是排序后的结果数组。
示例
在此示例中,我们将讨论如何对二维数组进行列排序。为了构建所需的程序,必须遵循的步骤如下。
- 步骤1 - 声明一个二维数组。
-
步骤2 - 按列依次遍历所有元素以相应地对这些元素进行排序。
-
步骤3 - 比较同一列的元素,如果一个元素小于另一个元素,则按以下条件进行比较。
-
步骤4 - 如果条件不满足,则交换元素。
-
步骤5 - 继续同样的过程,直到对列中的所有元素进行覆盖,并最后打印排序后的数组。
def sort_the_array_column_wise(arr):
for j in range (size):
for i inrange(size - 1):
if arr[i][j] < arr[i + 1][j]:
temp = arr[i][j]
arr[i][j] = arr[i + 1][j]
arr[i + 1][j] = temp
for i in range(size):
for j in range(size):
print(arr[i][j], end=" ")
print()
arr = [[7, 9, 5, 7 ], [9, 5, 9, 4], [2, 7, 8, 6], [ 8, 6, 6, 5 ]]
size = len(arr)
print("排序操作前的数组为: ")
for i in range(size):
for j in range(size):
print(arr[i][j], end=" ")
print()
print("排序操作后的数组为: ")
sort_the_array_column_wise(arr)
输出
上述程序的输出如下 –
排序操作前的数组为:
7 9 5 7
9 5 9 4
2 7 8 6
8 6 6 5
排序操作后的数组为:
9 9 9 7
7 7 8 6
8 6 6 5
2 5 5 4
结论
我们可以清晰地看到,上面的例子中,输出结果实际上与预期结果匹配。同样的,通过改变上面程序中的一些语句,可以对二维数组按行进行排序。这就是二维数组按列排序的原理。