eugene_leshchinskiy
@eugene_leshchinskiy

Как избавиться от StackOverFlow при рекурсивной сортировке?

Как при помощи рекурсивной quick sort отсортировать массив из, например, 10^6 элементов? Я так понимаю, заканчивается память потока, и он выдает исключение. Как с этим в Java борются, или просто используют другую сортировку?
  • Вопрос задан
  • 322 просмотра
Решения вопроса 1
impwx
@impwx
Разработчик
Для этого используется паттерн "трамплин". Есть хороший пример реализации на StackOverflow (увы, текст на английском):

stackoverflow.com/a/32909860/1293168
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Не обязательно в качестве "стека" использовать системный стек вызовов. Вы можете вместо рекурсии использовать цикл, а вместо системного стека вызовов использовать стек в библиотеке вашего языка программирования. Вместо рекурсивного вызова у вас будет помещение кортежа значений - параметров сортировки - на стек и их извлечение оттуда на очередном шаге обработки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
04 мая 2024, в 23:17
1200 руб./в час
04 мая 2024, в 22:32
2000 руб./за проект
04 мая 2024, в 22:10
2001 руб./за проект