让我困惑的作业练习:
我们有一个n
随机顺序的整数数组,练习要求我们使用下面指定的方法对它们进行排序。
首先,我们按照两个规则将整数放在行中:
- 仅当 a < b 时,我们才将整数 a 放在整数 b 之上
- 否则我们将整数 a 放在新行中
这两条规则用于对数组进行排序。当我们完成应用规则时,我们选择较小的可见整数,一次一个,直到它们被排序。
该练习需要使用 3 个数组:
data[1...n]
其中包含要排序的数字column[1...n,1...]
number[1..n]
表示每列的整数总数
例如,如果
data = [3,2,12,8]
那么column
将是:
column[1,1] = 3
column[2,1] = 2
column[1,2] = 12
column[2,2] = 8
并且number
会是[2,2]
我正在尝试制作一个循环(请记住,英语中的伪代码可能与我用自然语言学习的伪代码不同)
for counter=1 to n
number[counter]:=0;
end for
for counter=1 to n
a := 1;
b := 1;
if data[counter] < column[a,number[b]] or number[b]=0 then
number[b] := number[b] + 1;
column[a,number[b]] := data[counter];
else
a:=a+1;
b:=b+1;
end if
end for
但是这段代码有很多错误。有人可以尝试解释我的逻辑哪里错了吗?