為什麼 10 會排在 2 前面?自然排序如何解決
一般的字母排序會先比較每一項的第一個字元,再比較第二個,依此類推。「10」的第一個字元是 1,而 1 排在 2 前面,所以「10」會排在「2」前面。這種順序適用於文字,但用在數字上就錯了。自然排序會把每一段連續的數字當成一個完整的數字來讀,因此 2 會排在 10 前面。把數字補上零,例如 02 和 10,則能從檔案名稱本身解決同樣的問題。
依行排序清單順序亂了免費使用電腦為何這樣排序
一般排序會從左邊開始,逐一比較文字的每個位置,依據字元編碼或語言的排序規則決定先後,遇到第一個不同的字元就停止。這對文字很合適,例如「apple」排在「banana」前面,因為第一個字母就不同。
用在數字上就會出錯。假設有三個檔案名稱:file-2、file-9 和 file-10。比較最後兩個時,比較會進行到第 6 個位置,此時字元分別是 1 和 9。1 比較小,所以 file-10 會排在前面。一般排序的結果是 file-10、file-2、file-9。這對字母來說是正確的,但對需要依數量閱讀的人來說就是錯的。
自然排序
自然排序也稱為數字排序或人類排序,它會把每段文字切成數字段和其他字元段。數字段依數值比較,其他部分則當成文字比較。因此 2 會排在 10 前面,file-2 也會排在 file-10 前面。許多檔案總管預設就採用這種排序,所以編號的照片資料夾在它們裡面通常會顯示正確。
在 fixmint 中排序清單
- 將清單貼到排序工具中,每行一項。
- 在「順序」下,選擇「數字」,而不是 A→Z。
| 一般 A→Z | 數字 |
|---|---|
| 項目1、項目10、項目2 | 項目1、項目2、項目10 |
「數字」順序會把數字當成完整的數值來讀。刪除重複行也提供相同的「數字」順序。它會先移除重複內容再排序,因此輸出結果不重複,且依數值排列。
補零:另一種解決方法
自己為檔案命名時,讓每個數字的位數相同,例如 01、02 一直到 10,或是 001 到 100。這樣一般排序在任何地方都能得到正確順序,包括沒有自然排序功能的程式。補零也能讓清單離開你的電腦後仍保持順序,因為順序已經寫在檔案名稱裡。補零之所以有效,是因為位數相同時,逐字元比較的結果就會和數值順序一致。位數必須能容納最大的數字。若使用三位數,最多只能到 999,因此名為 1000 的檔案會排在 100 和 101 之間,破壞順序。當清單的數字超過原有位數時,請把所有數字都補到更寬的位數。
新檔案就這樣命名,既有的檔案則可以用批次改名的方式補上零。
一般排序會出現在哪裡
編號名稱隨處可見,例如匯出的照片 IMG_1 到 IMG_120、名為第 1 章到第 30 章的章節、曲目清單、發票號碼和軟體版本。這些情況在一般排序後都可能看起來不對,因為位置由第一個數字決定。第 10 章會跑到第 1 章旁邊,第 2 章則會被放到最後面。
帶有字母的標籤也一樣。在自然排序下,Part 2a、Part 2b 和 Part 10 會依此順序排列,因為數字會先以數值比較,字母只用來區分同一個數字的項目。一般排序則會把 Part 10 放在 Part 2a 前面。
日期需要留意。在自然排序中,日在前的日期,例如 4/11/2026 和 12/01/2026,會先比較日,因此 4/11 排在 12/01 前面,即使 1 月 12 日在一年中較早。年在前的日期,例如 2026-11-04,當成一般文字排序就會正確,所以清單需要依日期排序時,請使用這種格式。
排序後檢查結果
請檢查容易出錯的邊界,也就是一般排序最常出錯的地方:從 9 到 10,以及從 99 到 100 的轉換處。在「數字」排序中,這些位置會正確排列。若清單混用補零與未補零的數字,請先檢查這些位置,因為問題通常會在這裡出現。
有意識地選擇排序方式
文字、名稱和標題用 A 到 Z 排序,因為字母本身帶有意義。清單項目開頭是數量、頁碼、章節或版本時,用「數字」排序。想讓最短的項目排在前面時,用「長度」。「隨機排列」用來產生隨機順序,每按一次結果都會不同。關於一般字母排序的規則,請參閱如何為清單按字母排序。
特殊情況
- 混合內容的行。 自然排序會從左邊開始比較整行。若清單以名字開頭,名字會先決定順序,因此「Bob 1」會排在「Ada 10」後面,即使 1 小於 10。
- 混合位數。 同一份清單中,有補零與未補零的數字,在自然排序中可能被視為相等,因此它們的順序會取決於輸入順序。請為每份清單統一一種位數。
- 小數。 自然排序會把 1.9 讀成 1 和 9,把 1.10 讀成 1 和 10,因此 1.9 會排在前面。這適用於版本號碼,因為 1.10 是較新的版本。但對於價格等小數,1.10 小於 1.9,自然排序的結果就是錯的。請把小數補到相同的位數:1.10 和 1.90。
- 大小寫。 預設情況下,排序會把 Apple 和 apple 視為相同,因此它們會依貼上的順序排在一起。區分大小寫的選項可以改變這點。
借助 AI 協助,由英文原文翻譯而成。
留言
還沒有留言,搶先留言吧。


