Я новичок здесь, и у меня есть проблема, которая прослушивает меня. Я начинающий, поэтому, пожалуйста, не смейтесь надо мной. Я хочу, чтобы рекурсивная быстрая сортировка работала на большом количестве элементов, скажем, 100000. Я знаю, что это приведет к переполнению стека. В течение последних нескольких дней я искал поисковые запросы, пытаясь найти способ управления стеком вызовов. не может действительно найти хороший источник информации. My ideea - удалить обратный адрес каждого рекурсивного вызова, кроме последнего, который вернется к первому вызову функции. Я не знаю, возможно ли это или если это другое решение для этой проблемы.C - Управление стеком вызовов в рекурсивных методах
P.S. : Я хочу, чтобы quicksort был рекурсивным.
Извините, если мои проблемы выглядят глупо, но я могу уговорить любой подходящий ответ. Извините за мой плохой английский. Спасибо!
Опубликовать код. Если рекурсия может быть вызвана хвостом, вы можете заставить ее работать. –
Две вещи, которые помогут; не используйте наивный метод при выборе стержня и всегда возвращайтесь к меньшему разделу. – Blastfurnace
Если вы выберете подходящий стержень, вы исчерпаете память задолго до того, как глубина рекурсии станет проблемой. Тогда глубина логарифмична по размеру массива. –