无法在matlab中执行* quick sort *脚本(来自Engineering Computation with matlab book - Smith)

时间:2012-01-30 04:20:21

标签: matlab quicksort

脚本位于第2版第438页。这是:

function a = quicksort(a, from, to)
clear, clc, close all

if (from < to)
[a p] = partition(a, from, to);
a = quicksort(a, from, p);
a = quicksort(a, p+1, to);
end

function [a lower] = partition(from,to)

pivot = a(from); i = from - 1; j = to + 1;
while (i<j)
i = i + 1;
while lt(a(i),pivot)
    i = i + 1;
end
j = j - 1;
while gt(a(j), pivot)
    j = j - 1;
end
if (i<j)
    temp = a(i);
    a(i) = a(j);
    a(j) = temp;
end
end
lower = j;
a

我无法执行脚本以查看结果,并且我一直收到以下错误(即使我修改了输入):

??? Error using ==> quicksort>partition
Too many input arguments.

Error in ==> quicksort at 9
[a p] = partition(a, from, to);

有人可以帮帮我吗?我对这些Matlab排序技术很感兴趣。感谢。

1 个答案:

答案 0 :(得分:2)

你应该从不在函数内部调用clear all, clc, close all。在我看来,你甚至不应该从脚本中调用它。

此外,对partition的调用包含太多输入参数,如错误所示。实际上,函数partition应定义为partition(a, from, to),而不是partition(from,to)