Что делает реализацию сортировки gcc std :: list такой быстрой?

У меня есть реализация связанного списка, и я экспериментирую с алгоритмами Mergesort и QuickSort.

Я не понимаю, почему операция сортировки в std :: list так быстро. Глядя на std :: list в Linux, он тоже выглядит связанным списком, а не списком на основе массива.

Сортировка слиянием, которую я пробовал, почти идентична версии Дэйва Гэмбла здесь: Сортировка слиянием связанного списка

Также я подумал, что попробую простую быструю сортировку на основе этого кода: http://www.flipcode.com/archives/Quick_Sort_On_Linked_List.shtml

Удивительно, но сортировка 10 миллионов случайных чисел с помощью std :: list и sort была примерно в 10 раз быстрее, чем любой из этих других.

И для тех, кто спрашивает, да, мне нужно использовать свой собственный класс списка для этого проекта.

10
задан Community 23 May 2017 в 12:31
поделиться