Форум программистов, компьютерный форум CyberForum.ru

Переполнение стека в рекурсивной функции сортировки большого массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ При помощи массива посчитать количество выплат в каждом из диапазонов http://www.cyberforum.ru/cpp-beginners/thread1144058.html
Доброго времени суток. Решаю задачу из книги, суть ее такова: работникам платят определенную зарплату от $200 и выше. Надо при помощи массива посчитать количество выплат в каждом из диапазонов $200-$299, $300-$399 и т.д.(до 1000, все что больше 1000 в одну ячейку массива). Программу написал, ток выдает не правильные результаты(не правильное кол-во звездочек печатает) Ниже код, подскажите где...
C++ Математическое выражение в программе я не понимаю что значит после V ноль и этот ноль будет 3 раза изменен на 1 2 3 (он в цикле while) x={V}_{0}tcosa 1)объясните что означает после V ноль 2)запишите в стиле С + + это x={V}_{0}tcosa (можно без цикла сам с ним разберусь) http://www.cyberforum.ru/cpp-beginners/thread1144046.html
Односвязные списки. Удаление элементов с условием C++
Здравствуйте! Совершенно не понимаю. каким образом происходит удаление. Могу понять, что должно быть сделано, но трудности с реализацией в коде. Задание звучит следующим образом : Удалить абонентов, телефонный номер которых начинается с 3. Я заполняю список до 5-ти человек, а дальше у меня не работает функция сортировки. Помогите, пожалуйста, разобраться. using namespace std; struct...
C++ Вычитание комплексных чисел, как доделать?
Необходимо описать структуру с заданным именем, полями и содержащую следующие методы: Read – ввод с клавиатуры. Init – проверка корректности значений полей. Display – вывод на экран данных из структуры в «правильном виде». #include <iostream> #include <cmath> using namespace std;
C++ Перед каждым четным по номеру слову вставить слово mama http://www.cyberforum.ru/cpp-beginners/thread1144029.html
Дана строка, состоящая из слов, разделенных пробелами и заканчивающаяся точкой. Перед каждым четным по номеру слову вставить слово mama/
C++ Использование пространства имен. С++ Помогите с программой Описать указанные типы данных и поместить их в отдельный заголовочный файл. Аналогично поступить с функциями. Реализацию функций выполнить в отдельном файле. Типы данных и функции разместить в соответствующем пространстве имен. Написать программу, использующую описанные типы данных: инициализация переменных (ввод пользователя), выполнение действий (в зависимости от... подробнее

Показать сообщение отдельно
NEvOl
13 / 12 / 0
Регистрация: 13.08.2012
Сообщений: 641
09.04.2014, 23:04     Переполнение стека в рекурсивной функции сортировки большого массива
Написал рекурсивную функцию сортировки массива, с массивами небольших размеров все работает как надо, а вот если сортирую побоьлше (60000 элементов) то выскакиевает исключение
Unhandled exception at 0x01017A2A in Filtering.exe: 0xC00000FD: Stack overflow (parameters: 0x00000001, 0x00292FFC).
подскажите пожалуйста что не так, а то первый раз сталкиваюсь с этим, вот код функции:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
void Sort(photon *p, int b, int e)
{
    int ind = p[e].pos.x;
    int sI = e;
    int j = e-1;
    bool s(0);
 
    for(int i = b; i < e; i++)
    {
        if(p[i].pos.x >= ind)
        {
            while(p[j].pos.x >= ind && j > i)
            {
                j--;
            }
            if(j > i)
            {
                photon a = p[i];
                p[i] = p[j];
                p[j] = a;
                sI = i+1;
            }
        }
    }
 
    for(int i = b; i < e; i++)
    {
        if(p[i].pos.x >= ind)
        {
            photon a = p[i];
            p[i] = p[e];
            p[e] = a;
            sI = i;
            break;
        }
    }
 
    if(abs(b-(sI-1)) > 1)
        Sort(p, b, sI-1);
 
    if(abs((sI+1)-e) > 1)
            Sort(p, sI+1, e);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 09:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru