Чому 10 іде раніше за 2 і як це виправити природним сортуванням
Звичайне сортування за алфавітом порівнює перший символ кожного елемента, потім другий і так далі. Перший символ у «10» це 1, а 1 йде раніше за 2, тож «10» стоїть перед «2». Для тексту такий порядок правильний, а для чисел ні. Природне сортування читає кожну послідовність цифр як одне ціле число, тому 2 іде раніше за 10. Доповнення чисел нулями, наприклад 02 і 10, вирішує ту саму проблему в самих назвах.
Сортування рядківСписок не в порядкуБезкоштовноЧому комп'ютер так сортує
Звичайне сортування порівнює текст позицію за позицією, зліва направо, за кодами символів або порядком сортування мови. Воно зупиняється на першій відмінності. Для слів це годиться: «apple» іде перед «banana», бо перші літери різні.
З числами це не працює. Візьмімо три назви файлів: file-2, file-9 і file-10. В останній парі порівняння доходить до шостої позиції, де стоять символи 1 і 9. Одиниця менша, тож file-10 іде першим. Звичайний порядок такий: file-10, file-2, file-9. Для літер це правильно, але для того, хто читає числа, це неправильно.
Природне сортування
Природне сортування, його ще називають числовим або «людським», розбиває кожен текст на послідовності цифр і послідовності інших символів. Послідовності цифр порівнюються за значенням, а все інше як текст. Тож 2 іде раніше за 10, а file-2 раніше за file-10. Багато файлових менеджерів використовують таке сортування за замовчуванням, тому тека з пронумерованими фото зазвичай виглядає в них правильно.
Відсортуйте список у fixmint
- Вставте список в інструмент сортування, по одному елементу в рядку.
- У розділі «Порядок» виберіть «Числа» замість A→Z.
| Звичайне A→Z | Числа |
|---|---|
| item1, item10, item2 | item1, item2, item10 |
Порядок «Числа» читає цифри як цілі числа. Видалити дублікати пропонує той самий порядок «Числа». Спочатку інструмент прибирає повтори, а потім сортує, тож результат унікальний і впорядкований за числом.
Доповнення нулями: інший спосіб
Коли ви самі називаєте файли, зробіть однакову ширину для кожного числа: 01, 02 і так далі до 10, або від 001 до 100. Тоді звичайне сортування дає правильний порядок скрізь, зокрема в програмах без природного сортування. Доповнення також зберігає порядок, коли список виходить за межі вашого комп'ютера, бо порядок закладено в самих назвах файлів. Це працює, бо однакова ширина робить порівняння посимвольно таким самим, як числовий порядок. Ширина має вміщати найбільше число. Схема з трьома цифрами охоплює до 999, тож файл 1000 стояв би між 100 і 101 і порушив би порядок. Коли список переростає свою ширину, доповніть усі числа до більшої ширини.
Використовуйте це для нових файлів, а для вже наявних перейменуйте їх пакетно, додавши нулі.
Де з'являється звичайне сортування
Нумеровані назви трапляються скрізь: фото, експортовані як IMG_1 до IMG_120, розділи Розділ 1 до Розділ 30, списки треків, номери рахунків і версії програм. Після звичайного сортування будь-який із них може виглядати неправильно, бо першa цифра визначає позицію. Розділ 10 опиняється поруч із Розділом 1, а Розділ 2 майже в кінці.
Позначки з літерами працюють так само. Частина 2a, Частина 2b і Частина 10 у природному сортуванні йдуть саме в такому порядку, бо спочатку порівнюються числа, а літери визначають порядок лише всередині одного числа. Звичайне сортування ставить Частину 10 перед Частиною 2a.
Дати потребують уваги. У природному сортуванні дати з днем на початку, як 4/11/2026 і 12/01/2026, порівнюються спочатку за днем, тож 4/11 іде раніше за 12/01, хоча 12 січня настає раніше в році. Дати, записані з року на початку, як 2026-11-04, правильно сортуються як звичайний текст, тож використовуйте саме такий формат, якщо список має сортуватися за датою.
Перевірте результат після сортування
Перевірте межі, де звичайне сортування найчастіше помиляється: перехід від 9 до 10 і від 99 до 100. У сортуванні «Числа» ці місця стоять на своїх місцях. Якщо в списку змішано числа з доповненням і без нього, починайте перевірку саме з цих місць, бо змішування проявляється там.
Обирайте порядок свідомо
Використовуйте A→Я для слів, імен і назв, де важливий сенс літер. Використовуйте «Числа» для списків, елементи яких починаються з кількості, сторінки, розділу або версії. Використовуйте довжину, коли найкоротші елементи мають стояти першими. Перемішування потрібне для випадкового порядку, і при кожному натисканні результат буде іншим. Правила звичайного алфавітного порядку описано в статті як відсортувати список за алфавітом.
Особливі випадки
- Змішані рядки. Природне сортування порівнює цілі рядки зліва направо. У списку, що починається з імені, спочатку вирішує ім'я, тож «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 однаковими, тож вони стоять разом у тому порядку, в якому були вставлені. Регістрозалежне сортування змінює це.
Переклад з Англійський оригінал за допомогою ШІ.
Коментарі
Коментарів поки немає. Будьте першим.


