当我在C++中使用快速排序时,visual studio 2013警告堆栈溢出错误。如何避免快速排序堆栈流
我该如何解决这个问题?在这个问题中,我不能使用这种快速排序吗?
我认为,因为我在快速排序中使用递归,所以这个问题使许多深层存储器堆栈。
这里是代码。
int partition(int **array, int p, int r){
int x = array[r][1];
int i = p - 1;
int j;
int temp0, temp1;
for (j = p; j < r; j++){
if (array[j][1] <= x){
i++;
temp0 = array[i][0];
temp1 = array[i][1];
array[i][0] = array[j][0];
array[i][1] = array[j][1];
array[j][0] = temp0;
array[j][1] = temp1;
}
}
temp0 = array[i + 1][0];
temp1 = array[i + 1][1];
array[i + 1][0] = array[r][0];
array[i + 1][1] = array[r][1];
array[r][0] = temp0;
array[r][1] = temp1;
return i + 1;
}
void quickSort(int **array, int p, int r){
int q;
if (p < r){
q = Partition(array, p, r);
quickSort(array, p, q - 1);
quickSort(array, q + 1, r);
}
}
通常这意味着有一个无限递归。我建议在调用嵌套快速排列之前输出'q'的值。 – Peter 2014-09-19 07:36:09