Я пытаюсь получить время выполнения для двух алгоритмов сортировки в Java, сортировки вставки и слияния. Программа выполняет обе сортировки по несортированному списку ArrayList из 433 слов несколько раз и сохраняет время, затраченное на сортировку 100, 200, 300, 400 и 433 слов (весь массив), а затем выводит среднее время, затраченное на каждую из эти.
Я считаю, что мой код в порядке. Однако я сталкиваюсь со странной аномалией, и мне интересно, может ли кто-нибудь помочь мне понять.
Вот результаты, когда обе сортировки выполняются один раз:
Вот результаты, когда обе сортировки выполняются 10 000 раз:
Я считаю, что при запуске после того, как результаты ожидаются, сортировка вставкой выполняется быстрее для меньшего количества отсортированных элементов, но сортировка слиянием быстрее для большего количества и всего массива.
Однако при запуске 10 000 раз средние значения времени сильно отличаются, сортировка вставкой выполняется значительно быстрее для любого количества отсортированных элементов.
Как будто сортировка вставкой ускоряется с каждой итерацией, как это возможно?
Код для алгоритмов сортировки и метода, используемого для выполнения нескольких итераций указанных алгоритмов сортировки - в комментарии ниже
Спасибо за любую помощь, которую вы можете предоставить.