
No.3ベストアンサー
- 回答日時:
全データをオンメモリに持てないのでしたら、マージソートでしょう。
ただし、メモリに読めるならメモリ上で実行した方が速いので、
「ファイルから読めるだけ読んで、メモリ上ではクイックソートなどの高速なソート手段を使」って、「ソートされたデータ」群を生成し、
「ソート済データ列」に対しマージソートを実行って感じで。
例えば10000件のデータをソートするのに1000件しかメモリ上に乗らないなら、1000件ずつ読み込んで「ソートされた1000件のデータ列×10本」を作り、それをマージソートでマージして「ソートされた10000件のデータ列」を作る。
No.2
- 回答日時:
”ファイル内の構造体のメンバの1つをキーとして用いる”というルールがあるなら、ファイル内からキーを取り出してからソートしなきゃいけないと思うけど。
で、基本選択法がボトルネックではなくて、ファイルの読み込みがネックなんですか?
ファイルの読み込みがネックなら、環境がWindowsかUnixかわかりませんが、メモリマップドファイルで必要なところのみ参照すると速くなるかも。
No.1
- 回答日時:
どのやり方でやるにしても、ファイルにアクセスする時間が一番かかります
指定レコードを2つファイルから読んで、そのレコードを比較、入替えが発生したら
ファイルに書いて、なんて事をしているのであれば、そのつどファイルアクセスが
発生するので大変時間がかかります
逆に、ファイルの内容全てをメモリに読込んで、メモリの中でソート処理をして
メモリの内容全てをファイルに書き込むという方法を取れば、どんなソートでも
早いです
1.ファイルのサイズを求める
2.ファイルサイズ分のメモリ確保
3.ファイル全体を読込む
4.メモリの先頭に構造体のポインタを割当てて構造体の配列として、
ソートの処理を行う
(4バイト境界の問題があるかも)
5.既存ファイル削除後、新規ファイルとしてファイルを作成し
メモリの情報を全て書き込む
6.メモリの開放
こんな手順でやれば、たいがい早いです
ファイルサイズが膨大な場合、データベースを使用する事を提案します
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelの50音順ソートを全ての行列に適用するには? 4 2022/12/05 11:28
- Windows 10 Win 10エクスプローラーについて、ファイル名変更後即座に移動してしまう 対策は? 8 2023/08/16 03:49
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Excel(エクセル) excel マクロでグループ内でソートしたい。見出しが上手くいきません。 7 2022/05/22 08:31
- JavaScript jsonテキストデータの並び替えができるサービスを教えてください 2 2022/08/05 20:16
- Visual Basic(VBA) Excel VBAで並べ替えをしたい 3 2023/02/25 09:31
- UNIX・Linux Linuxについて質問です。 シェルスクリプト名をdiff.shとして、以下のように2つのテキストフ 1 2023/02/03 20:06
- Excel(エクセル) Excel 効率的な名簿と得点の管理の仕方 8 2022/08/07 08:15
- その他(パソコン・スマホ・電化製品) 挿入ソートとマージソートを比較すると,挿入ソートのほうが計算量は少なく,効率的なアルゴリズムである。 1 2022/11/30 17:31
- その他(プログラミング・Web制作) sortの優先キーについて(スプレッドシート) 1 2023/01/17 17:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミングのわかるサイト
-
C言語でアナグラムを求めるプロ...
-
【VBAマクロ:繰り返し処理に関...
-
C# ArrayListを二次元配列のよ...
-
C# ArrayList内の要素の並べ替え。
-
スプレッドでのソート
-
配列のソートの質問です。
-
MSFlexGridのSortメソッドについて
-
VB.NETでファイル名順にファイ...
-
Excelですべての組合せ(重複組...
-
In Design
-
TinyTableというスクリプトのソ...
-
Fortran77で多次元配列を並び替...
-
C言語・要素除去
-
クイックソート
-
クイックソートの可視化プログ...
-
配列の問題
-
【WPF】【C#】【XAML】LISTBOX
-
プログラミングに関する問題が...
-
構造体の配列について(2)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
C# DataGridView のヘッダーセ...
-
VBA基本構文の作り方 2列の...
-
C言語・要素除去
-
C# DataTableの行をソートしてD...
-
VB.NETでファイル名順にファイ...
-
構造体配列の並べ替え
-
あるディレクトリ内のファイル...
-
配列の問題
-
10個の整数を入力して小さい順...
-
2次元配列を複数項目でソートし...
-
構造体のリストをソートしたい。
-
DataGridViewソート時に先頭行...
-
DataGridViewのソートを止めたい
-
datagridviewの並べ替え
-
C++ 入力した3つのint型の整数...
-
DataGridViewの複数列を連動し...
-
Excelですべての組合せ(重複組...
-
C#のリストボックスで、クリッ...
-
VBScriptで重複レコードを削除...
おすすめ情報