我有這個功能,確實遞歸選擇排序的數組:堆棧溢出錯誤
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它崩潰給堆棧溢出。
我搜索了很多線程,他們都告訴使用矢量,我有。這是一個賦值問題,所以我應該對數組和向量進行遞歸排序。它爲矢量工作,但不適用於數組。另外我不應該在這個任務中使用指針。
谷歌如何增加你的堆棧與你使用的編譯器 – Marged