我正在通过在 MATLAB 中绘制图形来分析排序算法。下面是我的快速排序代码。当我运行它时,它给出了这个错误:
最大递归限制500
到达。使用set(0,'RecursionLimit', N)
更改限制。请注意,超出您的可用堆栈空间
可能会使 MATLAB 和/或您的计算机崩溃。 ==> 快速排序时出错
为什么会出现这个错误?我的代码有什么问题吗?
function [ar] = quickSort(ar, low, high)
if low < high
[ar, q] = parti(ar, low, high);
ar = quickSort(ar, low, q - 1);
ar = quickSort(ar, q + 1, high);
end
end
function [ar, i] = parti(ar, p, r)
x = ar(r);
i = p - 1;
for j = p : r
if ar(j) <= x
i = i + 1;
if i ~= j
tmp = ar(i);
ar(i) = ar(j);
ar(j) = tmp;
end
end
end
i = i + 1;
tmp = ar(i);
ar(i) = ar(r);
ar(r) = tmp;
end
我正在使用调用这个函数
ar = [7,7,3,0,3,1,4,7,5,6]
quickSort(ar, 1, 10)