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

Python编写随机矩阵最大负元素与最小正元素列交换程序

矩阵指定列互换功能实现

需求明细

  • 矩阵元素取值为(-10, 10)区间的随机整数,不包含-10、10两个边界值
  • 定位两个目标列:
    • 列1:包含整个矩阵最大负元素的列,调整列内元素顺序,将该最大负元素放到列的首位
    • 列2:包含整个矩阵最小正元素的列,调整列内元素顺序,将该最小正元素放到列的首位
  • 完成列内调整后,交换两个目标列的位置

规则参考:序列[-8, -2, 3, 5]中最大负元素为-2,对应列调整后-2位于列首;序列[-4, -2, 3, 6, 8]中最小正元素为3,对应列调整后3位于列首。

原有代码待修正点

  • 随机数生成逻辑不符合要求,原代码使用random.randint(0,50)生成0-50区间值,和需求的-9到9区间(不含±10)不符
  • 缺少全局最大负元素、最小正元素的遍历定位逻辑
  • 缺少列内元素移位、两列交换的实现逻辑

完整实现代码

import random

print("Enter number of cols:")
n = int(input())
print("Enter number of rows:")
m = int(input())

rows, cols = m, n
nums = []
# 生成符合取值要求的矩阵
for i in range(rows):
    current_row = []
    for j in range(cols):
        # randint为闭区间取值,取-9到9正好排除±10边界
        current_row.append(random.randint(-9, 9))
    nums.append(current_row)

print("原始矩阵:")
for row in nums:
    print(row)

# 初始化最大负元素、最小正元素的记录值和位置
max_neg = -10  # 初始值比所有合法负数更小
min_pos = 10   # 初始值比所有合法正数更大
neg_r, neg_c = 0, 0  # 最大负元素的行、列索引
pos_r, pos_c = 0, 0  # 最小正元素的行、列索引

# 遍历全矩阵定位两个目标元素
for i in range(rows):
    for j in range(cols):
        val = nums[i][j]
        if val < 0:
            if val > max_neg:
                max_neg = val
                neg_r, neg_c = i, j
        elif val > 0:
            if val < min_pos:
                min_pos = val
                pos_r, pos_c = i, j

# 列内移位函数:将指定列指定行的元素移到列首
def move_to_top(matrix, target_r, target_c):
    target_val = matrix[target_r][target_c]
    # 从目标位置往上逐行后移元素
    for i in range(target_r, 0, -1):
        matrix[i][target_c] = matrix[i-1][target_c]
    matrix[0][target_c] = target_val

# 先调整两个目标列的内部顺序
move_to_top(nums, neg_r, neg_c)
move_to_top(nums, pos_r, pos_c)

# 交换两个目标列的位置
for i in range(rows):
    nums[i][neg_c], nums[i][pos_c] = nums[i][pos_c], nums[i][neg_c]

print("处理后矩阵:")
for row in nums:
    print(row)

逻辑说明

  • 随机数生成使用random.randint(-9,9),覆盖-9到9的所有整数,完全符合不包含±10边界的要求
  • 单次双层遍历即可完成全局最大负元素、最小正元素的定位,时间复杂度为O(m*n)
  • 列内移位采用原地调整方式,不需要额外开辟整列的存储空间
  • 列交换按行逐次交换两个列对应位置的元素,直接在原矩阵上完成修改,若两个目标列为同一列,交换操作不会产生异常影响

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:06:25