1

Тема: Сортировка строк с числами (натуральная сортировка строк)

Сортировка строк с числами / Натуральная сортировка строк

Иногда возникает необходимость выполнить сортировку строк содержащих числа. Например, вывести список файлов фотографий: Img0, Img3, Img20, Img11, Img120. После сортировки стандартным способом вы получите следующий порядок:

Img0
Img11
Img120
Img20
Img3

Хотя куда удобнее было бы увидеть другой порядок, учитывающий возрастание числа в имени файла:

Img0
Img3
Img11
Img20
Img120

Стандартные алгоритмы сортировки используют сравнение строк посимвольно, а значит, все цифры строки также сравниваются как символы.

Когда мне понадобилось выполнить сортировку строк с цифрами (или как её еще называют «Натуральную сортировку»), я не стал изобретать колесо, а нашел в сети готовые решения. Из 3-х найденных вариантов выбрал самый быстрый, для чего собрал простенький тест:

Alphanum-сортировка со значительным отрывом обходит своих конкурентов, несмотря на громоздкость алгоритма. Две другие сортировки используют регулярные выражения, благодаря чему они более компактны в коде и менее шустрые в работе.

Тут можно скачать исходный код примера.


Ссылки на используемые в примере алгоритмы:
http://www.davekoelle.com/alphanum.html
http://demoeffect.blogspot.com/2007/12/ … -in-c.html

Thumbs up Thumbs down