|
20 / 19 / 1
Регистрация: 13.08.2012
Сообщений: 779
|
||||||
Переполнение стека в рекурсивной функции сортировки большого массива09.04.2014, 23:04. Показов 5465. Ответов 28
Метки нет (Все метки)
Написал рекурсивную функцию сортировки массива, с массивами небольших размеров все работает как надо, а вот если сортирую побоьлше (60000 элементов) то выскакиевает исключение
Unhandled exception at 0x01017A2A in Filtering.exe: 0xC00000FD: Stack overflow (parameters: 0x00000001, 0x00292FFC). подскажите пожалуйста что не так, а то первый раз сталкиваюсь с этим, вот код функции:
0
|
||||||
| 09.04.2014, 23:04 | |
|
Ответы с готовыми решениями:
28
Переполнение стека при рекурсивной сортировке |
|
Почетный модератор
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
|
| 09.04.2014, 23:06 | |
|
У любой рекурсии есть максимальная глубина... Вы просто заполнили стэк рекурсивными вызовами функций, вот и плюется исключениями
0
|
|
|
20 / 19 / 1
Регистрация: 13.08.2012
Сообщений: 779
|
|
| 09.04.2014, 23:07 [ТС] | |
|
и что делать тогда ?)
0
|
|
|
Почетный модератор
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
|
| 09.04.2014, 23:08 | |
|
Лучше всего - имхо, не скармливать такие массивы (или разбить его на несколько поменьше). Можно, вроде, через опции компилятора увеличить размер стэка, но, как мне кажется, это не есть гуд - программа должна быть рассчитана на разные компиляторы, а не только на один ваш
0
|
|
|
20 / 19 / 1
Регистрация: 13.08.2012
Сообщений: 779
|
|
| 09.04.2014, 23:11 [ТС] | |
|
0
|
|
| 09.04.2014, 23:12 | |
|
0
|
|
|
20 / 19 / 1
Регистрация: 13.08.2012
Сообщений: 779
|
|
| 09.04.2014, 23:39 [ТС] | |
|
я просто не понял о чем идет речь.
Добавлено через 14 минут а как быть, ребят подскажите пожалуйста, мне нужно сортировать массив размеров около 260000 элементов, методом пузырька это делается дико долго, нашел в интернет такой способ, но тут с размером обламывается, что делать тогда ? Добавлено через 11 минут передаваемый в функцию массив и так создается динамически.
0
|
|
|
20 / 19 / 1
Регистрация: 13.08.2012
Сообщений: 779
|
|
| 09.04.2014, 23:59 [ТС] | |
|
может кто-нибудь посоветует, нужен быстрый очень метод ?
0
|
|
|
20 / 19 / 1
Регистрация: 13.08.2012
Сообщений: 779
|
|
| 10.04.2014, 13:32 [ТС] | |
|
любые варианты, главное быстрые, и что бы программа не ломалась) размер массива от 250 000 до 1000 000 элементов, а диапозон значений произвольный
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|
| 10.04.2014, 13:35 | |
|
NEvOl, я же дал тебе ссылку на предыдущей странице. Там есть в том числе и твой алгоритм, но без рекурсии...
0
|
|
|
20 / 19 / 1
Регистрация: 13.08.2012
Сообщений: 779
|
|
| 10.04.2014, 13:37 [ТС] | |
|
пробовал сортировку методом пузырька, на сортировку 250 000 элементов уходит около полутора минут, в то время как быстрая сортировка занимает 10-15 секунд, но стек переполняется(
Добавлено через 40 секунд точно, сейчас попробую разобраться
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|
| 10.04.2014, 14:03 | |
|
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 10.04.2014, 14:20 | |
|
А разве сортировка вообще рекурсивна? Рекурсивно обработать массив можно в том случае, если можно разделить задачу его обработки на подзадачи обработки подмассивов, а сортировка так не распадается. Ведь как бы ты не разделил, на половины ли, на трети ли, или ещё как, сортировка этих фрагментов не имеет ничего общего с сортировкой всего массива. 0 12 3 15 1 6 5 4, делим на половины, получи 03 12 15 1 4 5 6, а надо 0 1 3 4 5 6 12 15, то есть 1, 4 и 5 должны перейти в левую половину, а 12 и 15 в правую, но при сортировке каждой из половин об этом во-первых не известно, а во-вторых не возможно. Можно надеться, что другое деление даст качественный результат, но из-за того, что при обработке подмассива не известно, что должно перейти в другой подмассив, это не решение.
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||
| 10.04.2014, 14:36 | ||
|
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 10.04.2014, 16:20 | ||
|
0
|
||
| 10.04.2014, 16:20 | |
|
Помогаю со студенческими работами здесь
20
Переполнение стека при первом же вызове функции Переполнение стека при вызове функции из Dll Переполнение стека при создании трехмерного массива Сортировка двумерного массива (переполнение стека, что делать?) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|