Как предотвратить исключение при быстрой сортировке 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";
}
