Cで次の宿題をしています。基本的に、解決策ではなくアプローチが必要です。
13 x 13 の配列があります。配列には、考慮する必要がある菱形があります。このひし形の外側にあるものはすべて -1 に初期化されます (重要ではありません)。以下の 5 x 5 配列の例 -
x x 1 x x
x 2 2 2 x
3 3 3 3 3
x 4 4 4 x
x x 5 x x
x=-1
この配列では、各エントリのひし形にある値には 11 ビットが含まれています。5 lsb には 1 つのデータ (色相) が含まれ、他の 6 には別のデータ (直径) が含まれます。色相についてはデータを行方向に単調に並べ替え、次に直径については列方向に単調に並べ替える必要があります。
これを行う最も効率的でメモリを節約する方法は何でしょうか? これを保存する必要があるため、別の配列を作成するのではなく、エントリを入れ替えるのが最善です。最終的に、ソートされたひし形配列になります (まだ -1 があります)。どうもありがとうございました!