2012-01-30 7 views
0

このスクリプトは、本の第2版の438ページにあります。ここでは、次のとおりです。matlabで* quick sort *スクリプトを実行できません(Engineering Computation with matlab book - Smith)

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ソート手法に非常に興味があります。ありがとう。

答えて

2

はありません。は、clear all, clc, close allを関数内に呼び出します。あなたは私の意見では、スクリプトの中からそれを呼び出すべきではありません。

また、partitionの呼び出しには、入力引数が多すぎます。これはエラーが示すとおりです。実際には、関数partitionは、partition(from,to)の代わりにpartition(a, from, to)と定義する必要があります。

+0

あなたの答えをありがとう。今私は関数atmを使用することに非常に自信があります。 – Pegasus99

+0

@ Pegasus99:嬉しいです!自分自身については、私はまだこれらの年を経て新しいことを学び続けています。 – Jonas

関連する問題