10が2より前に並ぶ理由と、自然順ソートでの解決方法
通常の並べ替えは、各項目の先頭の文字を比べ、次に2文字目、というように順に比べていきます。「10」の先頭の文字は1で、2より前なので、「10」は「2」より前に並びます。この順序は文字としては正しいものの、数としては誤りです。自然順ソートは数字のまとまりを1つの数として読むため、2が10より前に来ます。また、02や10のようにゼロで桁をそろえると、ファイル名そのものでも同じ問題を解決できます。
行の並べ替えリストの順番がバラバラ無料で使うコンピューターがこの方法で並べる理由
通常の並べ替えは、文字コードや言語の照合順序を使い、左から1文字ずつ比べます。最初に違いが見つかった時点で判定を終えます。単語にはこの方法が向いています。"apple"は"banana"より前に来ます。最初の文字が違うからです。
数字では問題が起きます。file-2、file-9、file-10 の3つのファイル名を例にします。最後の組み合わせでは6文字目まで比べることになり、そこで1と9を比べます。1の方が小さいため、file-10 が先に来ます。通常の並べ替えの結果は file-10、file-2、file-9 です。文字としては正しくても、数を数える人にとっては誤りです。
自然順ソート
自然順ソート(数値順、ヒューマンソートとも呼ばれます)は、各テキストを数字の連続と、それ以外の文字の連続に分けます。数字の連続は数値として、それ以外は文字として比べます。そのため、2は10より前に、file-2はfile-10より前に来ます。多くのファイル管理ツールは初期設定でこのような並べ替えを使っているため、連番の写真フォルダは通常そこで正しく表示されます。
fixmintでリストを並べる
- 行の並べ替えツールに、項目を1行ずつ貼り付けます。
- 「並び順」で「A→Z」ではなく「数値」を選びます。
| 通常のA→Z | 数値 |
|---|---|
| item1, item10, item2 | item1, item2, item10 |
「数値」の並び順では、数字を数値として読みます。重複行を削除にも同じ「数値」の並び順があります。先に重複を取り除いてから並べるため、結果は重複がなく、数値順になります。
ゼロ埋め:もう一つの解決法
自分でファイル名を付ける場合は、すべての数字の桁数をそろえてください。たとえば 01、02、…、10 や、001 から 100 のようにします。そうすると、自然順ソートに対応していないプログラムでも、通常の並べ替えで正しい順序になります。ファイル名自体に順序が含まれるため、リストをパソコンの外に出しても順序が保たれます。桁数をそろえると、1文字ずつの比較が数値の順序と一致するため、この方法が機能します。桁数は最大の数に合わせる必要があります。3桁の方式は999まで対応するため、1000という名前のファイルは100と101の間に並び、順序が崩れてしまいます。リストが桁数を超えて増えたら、すべての数字をより大きい桁数にそろえてください。
新しいファイルにはこの方法を使い、既存のファイルは一括で名前を変更してゼロを追加してください。
通常の並べ替えが問題になる場面
連番の名前はどこにでもあります。IMG_1からIMG_120までの名前で書き出された写真、第1章から第30章までの章立て、曲順のリスト、請求書番号、ソフトウェアのバージョンなどです。どれも、通常の並べ替えでは先頭の桁で位置が決まるため、おかしく見えることがあります。第10章が第1章の隣に来て、第2章が末尾近くに来てしまいます。
文字を含むラベルも同じです。自然順ソートでは、項目2a、項目2b、項目10 の順に並びます。数字がまず数値として比べられ、文字は同じ数字の中での順番を決めるだけだからです。通常の並べ替えでは、項目10 が 項目2a より前に来てしまいます。
日付には注意が必要です。自然順ソートでは、日・月・年の順で書かれた日付(4/11/2026 や 12/01/2026 など)は日から比べます。そのため、1月12日の方が年の中では早くても、4/11 が 12/01 より前に来ます。年・月・日の順で書かれた日付(2026-11-04 など)は通常の文字列として正しく並ぶため、日付順に並べる必要があるリストではこの形式を使ってください。
並べ替え後に結果を確認する
通常の並べ替えで最も間違いやすい境界、つまり9から10への変化と、99から100への変化を確認してください。数値の並べ替えでは、これらの箇所も正しい順序になります。ゼロ埋めの数字と埋めていない数字が混在するリストでは、まずこの境界を見てください。混在の影響がそこに現れるからです。
目的に合った並び順を選ぶ
単語、名前、タイトルなど、文字に意味がある場合は A→Z を使います。項目の先頭が件数、ページ、章、バージョンの場合は「数値」を使います。短いものを先に並べたい場合は「文字数」を使います。「シャッフル」はランダムな順序を選ぶためのもので、押すたびに結果が変わります。通常のアルファベット順のルールについては、リストをアルファベット順に並べる方法をご覧ください。
特殊なケース
- 行の混在。 自然順ソートは、行全体を左から比べます。名前で始まるリストでは、名前が先に順序を決めるため、「Bob 1」は1が10より小さくても、「Ada 10」より後に来ます。
- 桁数の混在。 ゼロ埋めの数字と埋めていない数字が同じリストにあると、自然順ソートで同じ値として比べられることがあり、順序が入力の順番に左右されます。リストごとに桁数を1つに統一してください。
- 小数。 自然順ソートは 1.9 を 1、9 として、1.10 を 1、10 として読むため、1.9 が先に来ます。これはバージョン番号には適しています。1.10 は後のリリースだからです。価格などの小数では、1.10 は 1.9 より小さいため、自然順の結果は誤りになります。小数の桁数をそろえてください。例:1.10 と 1.90。
- 大文字と小文字。 初期設定では Apple と apple を同じものとして扱うため、貼り付けた順に並んで続けて表示されます。大文字と小文字を区別する設定にすると、この動作が変わります。
英語原文をもとに、AIの支援を受けて翻訳しています。
コメント
まだコメントはありません。最初のコメントを書いてみましょう。


