0

一連の数値を配列に保存せずにファイル内から並べ替えることができますか?

4

1 に答える 1

1

これは、バイナリ ファイルではなく、テキスト ファイルであると想定しています。(数値を格納するための) テキスト ファイルの問題の 1 つは、数値のサイズが異なる可能性が高いことです。

はい、すべての数値が同じスペースを占めると仮定します (つまり、テキスト ファイルの場合は、すべての数値を同じ長さにパディングします)。[わかりました、技術的にはとにかく実行できますが、それには 2 点間のすべての中間数値を読み取ってから再度書き戻す必要があり、ファイル全体を読み取って保存する方がほぼ確実に優れています。それは再び戻ってきます]。

「方法」については、メソッドは他のソートアルゴリズムとほとんど同じです.2つの値を読み取り、順序が間違っている場合は交換します. おそらく「読み取り/スワップの数を減らす」アルゴリズムがあるでしょうが、私はそれを調べていません。

「ファイル全体に十分なメモリがない」という懸念がある場合は、いくつかの大きなチャンクを読み取り、それらのチャンク内/チャンク間で並べ替えることができます。必要に応じて繰り返します。sort繰り返しになりますが、おそらくこれ専用のソート アルゴリズムがあると思いますが、どれかはわかりません。テキスト ファイルをソートする必要がある場合は、UNIX を使用する傾向があります。

このページの最初の回答には、「並べ替えの比較」へのリンクが あります最小書き込み回数を使用して配列を並べ替えるには?

于 2013-06-21T11:14:13.187 に答える