【发布时间】:2016-01-17 00:19:42
【问题描述】:
我有一个对数组进行递归选择排序的函数:
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,它工作正常,但我应该让这个工作为 size>5000 并且它崩溃导致堆栈溢出。
我搜索了很多线程,他们都告诉使用向量,我有。这是一个赋值问题,所以我应该对数组和向量进行递归排序。它适用于向量,但不适用于数组。我也不应该在这个作业中使用指针。
【问题讨论】:
-
Google 如何使用您使用的编译器增加堆栈
标签: c++ recursion stack-overflow