numbers sort, lexicographic order

Dec 22, 2011 16:42

Оригинал взят у _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
Previous post Next post
Up