私を困惑させる割り当て演習:
n
ランダムな順序の整数の配列があり、演習では、以下に指定された方法を使用してそれらを並べ替える必要があります。
まず、次の 2 つの規則に従って整数を行に配置します。
- a < b の場合にのみ、整数 a を整数 b の上に配置します
- それ以外の場合、整数 a を新しい行に配置します
これらの 2 つのルールは、配列の並べ替えに使用されます。ルールの適用が終了したら、小さい方の可視整数を、ソートされるまで一度に 1 つずつ選択します。
この演習では、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
しかし、このコードには多くの間違いがあります。誰かがロジックのどこが間違っているかを説明してもらえますか?