Какой алгоритм сортировки используется Microsoft STL :: list :: sort ()? - PullRequest
2 голосов
/ 11 ноября 2009

Примечание: я случайно отправил этот вопрос , не указав, какую реализацию STL я использовал, и я чувствовал, что это не может быть действительно обновлено, поскольку это сделает большинство его ответов устаревшими.

Итак, возникает правильный вопрос - какой алгоритм сортировки используется в приведенном ниже коде, при условии, что я использую библиотеку STL Microsoft Visual C ++?:

list<int> mylist;

// ..insert a million values

mylist.sort();

Ответы [ 4 ]

8 голосов
/ 11 ноября 2009

Так что вам не нужно полагаться на информацию из вторых рук, код сортировки находится прямо в заголовке list - это около 35 строк.

Представляется модифицированной итеративной (нерекурсивной) сортировкой слиянием, содержащей до 25 бинов (я не знаю, существует ли конкретное имя для этого варианта сортировки слиянием).

3 голосов
/ 11 ноября 2009

По крайней мере в последних версиях (например, VC ++ 9.0 / VS 2008) MS VC ++ использует сортировку слиянием.

2 голосов
/ 12 ноября 2009

STL, поставляемый с MS VC6, был версией библиотеки П. Дж. Плаугера (Dinkumware), и она использовала сортировку слиянием в std::list<>::sort(). Я не знаю о более поздних версиях пакета MS.

0 голосов
/ 11 ноября 2009

Насколько мне известно, это Introsoft: http://en.wikipedia.org/wiki/Introsort

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...