📜  如何在python中对二维数组进行冒泡排序(1)

📅  最后修改于: 2023-12-03 14:52:49.593000             🧑  作者: Mango

如何在Python中对二维数组进行冒泡排序

冒泡排序是一种简单的排序算法,它重复地遍历要排序的序列,一次比较两个元素,如果它们的顺序错误就把它们交换过来,并继续遍历,直到没有任何再需要交换的元素。这个算法的名字由来是因为越小的元素会经过交换慢慢"浮"到数列的顶端。冒泡排序的时间复杂度为O(n^2)。

对于一个二维数组,排序的方式稍有不同。由于每个子数组的长度可能不同,所以我们需要对每个子数组进行排序。

以下代码片段演示了如何使用冒泡排序对一个二维数组进行排序。代码中我们首先定义了一个二维数组arr,然后对它进行排序并输出排序结果。

# 定义一个二维数组
arr = [
    [4, 3, 2, 1],
    [8, 7, 6, 5],
    [12, 11, 10, 9]
]

# 对每个子数组进行排序
for i in range(len(arr)):
    for j in range(len(arr[i])-1):
        for k in range(len(arr[i])-j-1):
            if arr[i][k] > arr[i][k+1]:
                arr[i][k], arr[i][k+1] = arr[i][k+1], arr[i][k]

# 输出排序结果
print(arr)

输出结果为:[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

在代码中我们使用了三个嵌套的for循环来对每个子数组进行排序。其中,外层的for循环用来遍历每个子数组。内部的两个for循环则用来进行冒泡排序。

在第二个for循环中,我们使用了len(arr[i])-1来确保每个子数组的排序都不会越界。在第三个for循环中,我们使用了range(len(arr[i])-j-1)来避免已经排好序的元素重复比较。

最后,我们使用了一个简单的交换操作来交换两个元素的位置。如果第一个元素比第二个元素大,那么就将它们交换位置。