我有一个二维整数数组 A(length m, width n) 保存在 MIPS 的地址中。在这个数组中,我想创建另一个数组 B,它只包含数组 A 中的非零值。从伪代码的角度来看,如何实现它?
我的想法是逐行遍历数组A(每行作为一维数组)。这意味着将数组 A 细分为 n 个一维数组,并使用 for 循环过滤掉非零元素。
这种方法听起来可信吗?
我有一个二维整数数组 A(length m, width n) 保存在 MIPS 的地址中。在这个数组中,我想创建另一个数组 B,它只包含数组 A 中的非零值。从伪代码的角度来看,如何实现它?
我的想法是逐行遍历数组A(每行作为一维数组)。这意味着将数组 A 细分为 n 个一维数组,并使用 for 循环过滤掉非零元素。
这种方法听起来可信吗?
二维数组实际上只是内存中的一维数组,所以如果你不关心按特定顺序循环,可以循环内存中的数组(m*n)
以节省一些指令。否则,您可以按照您所说的逐行遍历。
我将使用的基本想法是让数组 B 模拟推入堆栈。这将在最后留下一些零,您将拥有非零“堆栈”的大小。每次向数组添加元素时,都会增加“堆栈”大小。
伪代码:
int b[m*n];
int b_size = 0;
for (int i=0; i<m*n; i++)
{
if (a[i] != 0)
{
b[b_size] = a[i];
b_size++;
}
}
希望您能从这里弄清楚如何将其转换为 MIPS。