You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用冒泡排序法对Python矩阵中的单列进行升序排序?

矩阵单列冒泡升序排序实现

原代码问题分析

你的代码存在两个核心问题:

  • 循环逻辑错误:冒泡排序单列时,应遍历列的行索引完成完整的冒泡过程,原代码嵌套循环的遍历逻辑仅交换了部分相邻元素,无法实现全列排序。
  • 数据关联性缺失:若需保持矩阵行数据的完整性(排序单列时对应整行同步移动),原代码仅交换单列元素会导致行数据错乱。

正确的冒泡排序实现(单列排序+整行交换)

以下是针对矩阵指定列进行冒泡升序排序的代码,排序时整行会随单列元素的交换同步移动,确保数据关联:

def sort_column(matrix, col_index):
    n = len(matrix)
    # 冒泡排序:逐轮将当前列最大元素"冒"到末尾
    for i in range(n - 1):
        for j in range(n - i - 1):
            # 比较当前列的相邻元素
            if matrix[j][col_index] > matrix[j + 1][col_index]:
                # 交换整行,保持行数据完整
                matrix[j], matrix[j + 1] = matrix[j + 1], matrix[j]
    # 格式化打印排序后的矩阵
    for row in matrix:
        print(' '.join(f'{num:.3f}' for num in row))
    return matrix

# 示例矩阵(替换为你的实际矩阵)
A = [
    [3.141, 2.718, 1.618],
    [1.000, 0.577, 4.669],
    [2.000, 3.000, 5.000]
]
# 对第0列执行排序(可修改col_index指定其他列)
sorted_A = sort_column(A, 0)
print()

代码说明

  • col_index参数用于指定要排序的列索引(如第0列传0,第1列传1)。
  • 外层循环控制排序轮数,内层循环负责每一轮的相邻元素比较与整行交换。
  • 若仅需单独排序单列元素(不移动整行),可将交换逻辑改为仅交换matrix[j][col_index]与matrix[j+1][col_index],但该场景在矩阵操作中极少用到。

内容的提问来源于stack exchange,提问作者Fecozoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 00:35:25