fixmint
RU

Почему 10 идёт перед 2 и как сортировка по числам это исправляет

Автор: · · обновлено 8 ноября 2026 г. · Чтение: 4 мин

Обычная сортировка по алфавиту сравнивает первый символ каждого элемента, затем второй и так далее. Первый символ «10» — это 1, а 1 стоит раньше 2, поэтому «10» оказывается перед «2». Для текста такой порядок правильный, а для чисел — нет. Сортировка по числам («естественная» сортировка) читает каждый фрагмент цифр как одно целое число, поэтому 2 идёт перед 10. Если дополнить числа нулями, например 02 и 10, та же проблема исчезнет уже в самих именах.

Сортировка строкСписок не по порядкуСделать бесплатно

Почему компьютер сортирует именно так

Обычная сортировка сравнивает текст по одной позиции слева направо, используя коды символов или порядок сортировки языка. Как только находит первое различие, она останавливается. Для слов это работает: «apple» идёт перед «banana», потому что первые буквы разные.

С числами это не работает. Возьмём три имени файла: file-2, file-9 и file-10. В последней паре сравнение доходит до 6-й позиции, где стоят символы 1 и 9. Единица меньше, поэтому file-10 оказывается первым. Обычный порядок получается таким: file-10, file-2, file-9. Для букв это правильно, а для тех, кто читает номера, — нет.

Сортировка по числам

Сортировка по числам, которую также называют числовой или «человеческой», делит каждый текст на фрагменты из цифр и фрагменты из остальных символов. Фрагменты цифр сравниваются по их значению, всё остальное — как текст. Поэтому 2 идёт перед 10, а file-2 — перед file-10. Многие файловые менеджеры используют такую сортировку по умолчанию, поэтому папка с пронумерованными фотографиями обычно выглядит в них правильно.

Отсортируйте список в fixmint

  1. Вставьте список в инструмент «Сортировка строк», по одному элементу в строке.
  2. В разделе «Порядок» выберите «Числа» вместо «А→Я».
Обычная А→ЯЧисла
item1, item10, item2item1, item2, item10

Порядок «Числа» читает цифры как целые числа. Удаление дубликатов использует тот же порядок «Числа». Сначала инструмент убирает повторы, а потом сортирует, поэтому на выходе получается список без повторов в числовом порядке.

Дополнение нулями: второе решение

Если вы сами называете файлы, сделайте все номера одинаковой ширины: 01, 02 и так далее до 10, или от 001 до 100. Тогда обычная сортировка даст правильный порядок везде, в том числе в программах без сортировки по числам. Дополнение нулями также сохраняет порядок, когда список уходит с вашего компьютера, ведь порядок записан в самих именах файлов. Это работает, потому что одинаковая ширина делает посимвольное сравнение похожим на числовое. Ширина должна вмещать самое большое число. Схема из трёх цифр покрывает числа до 999, поэтому файл с именем 1000 встанет между 100 и 101 и порядок нарушится. Когда список вырастает за пределы ширины, дополните все номера до новой, большей ширины.

Используйте этот способ для новых файлов, а существующие переименуйте пакетно, добавив нули.

Где проявляется обычная сортировка

Нумерованные имена встречаются повсюду: фотографии, экспортированные как IMG_1 — IMG_120, главы «Chapter 1» — «Chapter 30», треки в плейлистах, номера счетов и версии программ. После обычной сортировки любое из них может выглядеть неправильно, потому что положение определяет первая цифра. Chapter 10 оказывается рядом с Chapter 1, а Chapter 2 — почти в самом конце.

Метки с буквами работают так же. При сортировке по числам Part 2a, Part 2b и Part 10 идут именно в таком порядке, потому что сначала сравниваются числа, а буквы решают только внутри одного и того же номера. Обычная сортировка ставит Part 10 перед Part 2a.

С датами нужна осторожность. При сортировке по числам даты, где сначала стоит день, например 4/11/2026 и 12/01/2026, сравниваются по дню, поэтому 4/11 идёт перед 12/01, хотя 12 января наступает раньше в году. Даты, где сначала стоит год, например 2026-11-04, сортируются правильно как обычный текст. Поэтому, если список должен быть отсортирован по дате, используйте этот формат.

Проверьте результат после сортировки

Проверьте границы, на которых обычная сортировка чаще всего ошибается: переход от 9 к 10 и от 99 к 100. При сортировке по числам эти места стоят правильно. Если в списке смешаны номера с дополнением нулями и без него, сначала смотрите именно на эти места, потому что смесь проявится там.

Выбирайте порядок осознанно

Используйте «А→Я» для слов, имён и названий, где смысл несут буквы. Используйте «Числа» для списков, элементы которых начинаются с количества, страницы, главы или версии. Используйте «по длине», когда короткие элементы должны идти первыми. «Перемешать» выбирает случайный порядок, и при каждом нажатии результат будет другим. Правила обычного алфавитного порядка описаны в статье как сортировать список по алфавиту.

Особые случаи

  • Смешанные строки. Сортировка по числам сравнивает целые строки слева направо. В списке, который начинается с имени, сначала решает имя, поэтому «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 одинаковыми, поэтому они идут вместе в том порядке, в котором были вставлены. Сортировка с учётом регистра это меняет.

Переведено с помощью ИИ с Английский оригинал.

Комментарии

    Комментариев пока нет. Будьте первым.

    Ваша оценка (необязательно)

    Ваша почта никогда не показывается и не сохраняется.

    Обложка книги «How to Remain Valuable When Intelligence Becomes Cheap»How to Remain Valuable When Intelligence Becomes Cheap

    224 страницы о человеческих, экономических и стратегических преимуществах, которые сохраняют ценность, когда ИИ может выполнять большую часть когнитивной работы.

    $3.84Купить на GumroadНа английском