構造体のソート

メモ書き
大きな構造体の配列をソートする場合、インデッックスとキーを代入した構造体配列をソートしたほうが軽くなる。

・ソートしたい構造体配列A

・補助配列B
 index
 key

1 配列Bに代入
for{
B(i).index = i
B(i).key = A(i).(ソートするメンバ)
}
2 配列Bをソート

3 ソートした配列Bのインデックスにしたがって
  Aを出力、代入など
for{
NewA(i).メンバ = A(B(i).index).メンバ
}


今回のマクロにてこのアルゴリズムを使用しました。
以前、どこかで見た記憶があるのですがどこだったか思い出せず
内容もうろ覚えなため正しくないかもしれません。
とりあえず、忘れないうちにメモ。




いったん記事更新してから思い出しました。

言語はC

・ソートしたい構造体配列A
・アドレスの配列B

1 配列Bに構造体配列Aのアドレスを代入
2 B(i).keyをキーにして配列Bをソート
3 NewA = B

0 件のコメント:

コメントを投稿