Да, есть причина использовать сортировку вставки или один из ее вариантов.
Варианты сортировки (быстрая сортировка и т. Д.) Других ответов здесь предполагают, что данные уже находятся в памяти и готовы к отправке.
Но если вы пытаетесь прочитать большое количество данных из более медленного внешнего источника (например, с жесткого диска), большое количество времени будет потрачено впустую, поскольку узким местом является канал данных или сам диск. Это просто не может идти в ногу с процессором. Естественная серия ожиданий происходит во время любого чтения. Эти ожидания потраченные впустую циклы процессора , если только вы не используете их для сортировки по ходу .
Например, если вы решили принять следующее решение:
- Считать тонну данных в выделенном цикле в память
- Сортировать эти данные
Скорее всего, вам потребуется больше времени, чем если бы вы делали следующее в двух потоках.
Тема A:
- Считать данные
- Поместить данные в очередь FIFO
- (повторять до тех пор, пока данные с диска не будут исчерпаны)
Резьба B:
- Получить данные из очереди FIFO
- Вставьте его в нужное место в вашем отсортированном списке
- (повторять до тех пор, пока очередь не станет пустой И поток А не скажет "готово").
... вышеизложенное позволит вам использовать потраченное впустую время. Примечание. Тема B не препятствует выполнению темы A.
К тому времени, когда данные полностью прочитаны, они будут отсортированы и готовы к использованию.