Зачем использовать for
? Почему бы просто:
sort -k5n file.txt
А какой тип более эффективен, зависит от ряда вопросов. Без сомнения, вы можете сделать более быструю сортировку для определенных наборов данных (размер и другие свойства) - пузырьковая сортировка может на самом деле превосходить другие сортировки (с конкретными входными данными).
Однако, вы проверили стандартную сортировку и установили, что она слишком медленная? Это первое, что вы должны сделать. Моя машина (которая ни в коем случае не самая грубая на планете) может выполнить 4 миллиона из этих строк менее чем за десять секунд:
real 0m9.023s
user 0m8.689s
sys 0m0.332s
Сказав это, есть по крайней мере один трюк, который может ускорить его. Перед применением сортировки преобразуйте файл в записи фиксированной длины с полями фиксированной длины. Сортировка по определенному набору символов и записей фиксированной длины часто может быть намного быстрее, чем более гибкая сортировка, допускаемая переменным полем и размерами записей, допускаемыми sort
.
Таким образом, вы добавляете операцию O(n)
(преобразование), чтобы ускорить то, что, вероятно, в лучшем случае является операцией O(n log n)
(сортировка).
Но, как и во всех оптимизациях, измерьте, не угадайте!