0

たとえば、入力ファイルin.txt :

naturalistic 10
coppering 20
artless 30

コマンドの後: sort in.txt

artless 30
coppering 20
naturalistic 10

コマンドの後: sort -n -k 2 in.txt

naturalistic 10
coppering 20
artless 30

私の質問:列に従って並べ替えている間、行を安定に保つにはどうすればよいですか。一般的な順序が変更されている間、行全体を同じままにしたいですか? どのアルゴリズムまたはコードが有用ですか? ファイルの読み取りまたはソート機能についてですか?

4

2 に答える 2

2

標準 UNIXsortは、使用するアルゴリズムを文書化していません。入力のサイズや並べ替えオプションなどに応じて、別のアルゴリズムを選択することさえあります。

並べ替えアルゴリズムに関するウィキペディアのページには、選択できる多くの並べ替えアルゴリズムがリストされています。

安定した並べ替えが必要な場合は、多くのオプションがあります (同じウィキペディアのページの比較表には、どれが安定しているかがリストされています) が、実際には、各データ項目に入力内の元の位置をタグ付けすることで、並べ替えアルゴリズムを安定させることができます。そして、その位置に応じてキー比較関数で同点を解消します。

それ以外は、あなたが何を求めているのか明確ではありません。あなたの質問では、 with オプションと without オプションの使用を示していますがsort、これがソートアルゴリズムの実際の選択に影響を与える理由は明らかではありません...-n-k

于 2013-06-29T00:50:50.000 に答える
0

num をキーとして文字列を値として文字列のハッシュ テーブルを作成し (それらは一意であると想定しています)、コマンドのsort場合は値に基づいて-n -k 2並べ替え、キーに基づいて並べ替えます. POSIX 標準では、使用するアルゴリズムが規定されていないため、異なる UNIX フレーバーでは異なるアルゴリズムが使用される場合があります。GNU ソートは Merge Sort を使用します http://en.wikipedia.org/wiki/Merge_sort

于 2013-06-29T02:04:10.770 に答える