У меня есть эта функция, которая делает рекурсивный выбора рода для массива:стек ошибка переполнения в C++
void SelectionSort::RecursiveSort(int ar[] , int flag, int first, int last){
// first - index of first element and last - index of last element
if (flag == 1)
{
if (first < last) //ascending
{
for (int i = first; i <= last; i++) if (ar[i] < ar[first]) swap(ar[i], ar[first]);
RecursiveSort(ar, flag, first + 1, last);
}
if (first == last) return;
}
else
{
if (first < last) //desc
{
for (int i = first; i <= last; i++) if (ar[i] > ar[first]) swap(ar[i], ar[first]);
RecursiveSort(ar,flag, (first + 1), last);
}
if (first == last) return;
}
}
Он отлично работает, если размер массива 3000, но я должен сделать эту работу размером> 5000 и его сбой при переполнении стека.
Я искал много потоков, и все они говорят использовать векторы, и у меня есть. Это проблема присваивания, поэтому я должен выполнять сортировку рекурсии как для массивов, так и для векторов. Он работает для векторов, но не для массивов. Также я не должен использовать указатели в этом задании.
Google, как увеличить свой стек с помощью используемого вами компилятора – Marged