メモ書き
大きな構造体の配列をソートする場合、インデッックスとキーを代入した構造体配列をソートしたほうが軽くなる。
・ソートしたい構造体配列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 件のコメント:
コメントを投稿