Как предотвратить исключение при быстрой сортировке 1млн целых чисел?

Я реализовал рекурсивную функцию быстрой сортировки, она прекрасно справляется с целыми числами до 100 тысяч, но при сортировке 1 млн чисел вызывается исключение, ведущее к файлу xmemory. Без понятия как можно предотвратить это исключение. Visual Studio 2022 года, использую пространство имён std, т.к. проект состоит только из 1 cpp файла. Исключение скорее всего возникает из-за переполнения стека памяти, но как правильно изменить код не знаю.

#include <iostream> //вывод и ввод данных в консоли
#include <vector> //для создания вектора

using namespace std;

vector <int> fast_sort(vector <int> vec) {

    if (vec.size() == 0) {

        return vec;
    }

    else if (vec.size() == 1) {

        return vec;
    }

    else {

        int oe = vec[0];
        vector <int> left_vec;
        vector <int> right_vec;
        vector <int> sort_vec;
        
        for (int i = 1; i < vec.size(); ++i) {

            if (vec[i] <= oe) {

                left_vec.push_back(vec[i]);
            }

            else {

                right_vec.push_back(vec[i]);
            }
        }

        left_vec = fast_sort(left_vec);
        right_vec = fast_sort(right_vec);
        sort_vec.insert(sort_vec.end(), left_vec.begin(), left_vec.end());
        sort_vec.push_back(oe);
        sort_vec.insert(sort_vec.end(), right_vec.begin(), right_vec.end());
        return sort_vec;
    }
}

int main() {

    //установка полной поддержки русского языка в консоли
    setlocale(LC_ALL, "Russian");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);

    vector <int> vec;
    srand(time(NULL));

    for (int i = 0; i < 1000000; ++i) {

        int num = 1 + rand() % 1000;
        vec.push_back(num);
    }

    cout << "start\n";
    vec = fast_sort(vec);
    cout << "end\n";
}

Исключение


Ответы (0 шт):