Пушыстый (_winnie) wrote,
Пушыстый
_winnie

numbers sort, lexicographic order

Лексикографическая("алфавитная") сортировка чисел расставляет их в неправильном порядке:
1000000
20
21
3
3.14159
4

Миллион стоит перед 20 потому что первая цифра 1 меньше 2.

Что бы лексикографическая сортировка для строковых представлений положительных чисел была правильной, можно дописать перед числом достаточно много нулей, напр. 20 нулей (коллега расказал про хак: использовать пробелы вместо нулей).
00000000000000000003
00000000000000000003.14159
00000000000000000004
00000000000000000020
00000000000000000021
00000000000001000000


Придумал ещё способ. Для сохранения зрения и места в файлах - дописать перед числом количество цифр в нем, а не нули. Двумя цифрами, 01, 02, 03, .. 99. Числа с 10-ю цифрами иногда попадаются в измерениях (миллиарды), а с сотней - уже нет.
01|3
01|3.14159
01|4
02|20
02|21
07|1000000


Можно заменить на букву, от а до z, ещё более сжато получается:
b 3
b 3.14159
b 4
c 20
c 21
h 1000000


Ну и оставить от второго числа только нужные значащие цифры, напр. 3.

b3
b314
b4
c2
c21
h1


Что бы не слишком сильно шокировать окружающих, можно писать в виде, похожем на стандартный экспоненциальный:
e06*1.0
e00*3.14
Tags: release, soft-dev, text, tips
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 36 comments