Пространственная сложность наивной реализации быстрой сортировки (которая по-прежнему популярна для qsort) в худшем случае - это O (N). Если , то реализация модифицируется для сортировки меньшего размера сначала для и оптимизации хвостовой рекурсии или явного стека и используется итерация , а затем может быть занесено пространство в худшем случае. вплоть до O (журнал N), (что большинство ответов здесь уже писал). Таким образом, вы не взорвете свой стек, если реализация быстрой сортировки не нарушена и библиотека не была нарушена неправильными флагами компилятора. Но, например, большинство компиляторов, которые поддерживают устранение хвостовой рекурсии, не будут выполнять эту оптимизацию в неоптимизированных сборках отладки. Библиотека, созданная с неправильными флагами (т. Е. Недостаточно оптимизация, например, во встроенном домене, где вы иногда создаете свой собственный отладочный libc), может привести к сбою стека.
Для большинства разработчиков это никогда не будет проблемой (у них есть протестированные поставщиком библиотеки libc, которые имеют O (log N) пространство сложности), но я бы сказал, что это хорошая идея, чтобы взглянуть на потенциальные проблемы с библиотекой времени ко времени.
ОБНОВЛЕНИЕ: Вот пример того, что я имею в виду: ошибка в libc (с 2000 года), когда qsort начинал перебивать виртуальную память, потому что реализация qsort внутренне переключалась бы на mergesort, потому что в ней достаточно памяти для хранения временного массива.
http://sources.redhat.com/ml/libc-alpha/2000-03/msg00139.html