多段ソート
C言語というよりはアルゴリズムの話です。
[名前], [生年月日]
の2つのカラムで表される固定長の行データが羅列されたファイルがあります。
また、各カラムを比較して行をソートした場合にどの行が何番目にくるかといったインデックス情報を木構造で保持したファイルがあります。
(このファイルは行データの追加・削除時に更新される)
これらのファイルを利用して、生年月日でソートし、かつ日時が同じ場合は名前順にソートした場合の上から10個分だけのデータを取り出したいのですが、効率のよい方法は無いでしょうか?
全データを読み込んでから、バブルソート等の順序を崩さないソートを多重にかけることはなるべく避けたいのです。
そのためにソート済みのインデックス的な役割を持つファイルを用意しているのですが、多段ソート時にどう応用すればよいのかわからなくなってしまいました。
例
日時、名前の順にソートされた上4つ分のデータが欲しい。
【一覧】
[1行目] 10/20, Aさん
[2行目] 11/30, Fさん
[3行目] 9/10, Cさん
[4行目] 11/30, Bさん
[5行目] 12/10, Dさん
【生年月日でソートされた インデックス】
9/10, 3行目
10/20, 1行目
11/30, 2行目
11/30, 4行目
12/10, 5行目
【名前でソートされた インデックス】
Aさん, 1行目
Bさん, 4行目
Cさん, 3行目
Dさん, 5行目
Fさん, 2行目
得たい結果
[3行目] 9/10, Cさん
[1行目] 10/20, Aさん
[4行目] 11/30, Bさん
[2行目] 11/30, Fさん