は、バイナリサーチのために私のコードです:バイナリ検索がMATLABのリニア検索より遅くなるのはなぜですか?ここ
function result = binarySearch(a, key)
binaryFound = false;
halfIndex = fix(length(a)/2) + 1;
if a(halfIndex) == key
binaryFound = true;
elseif length(a)==1 && a(1)~=key
binaryFound = false;
elseif key > a(halfIndex)
newHalfArray = a(halfIndex+1:end);
binaryFound = binarySearch(newHalfArray, key);
else
newHalfArray = a(1:halfIndex-1);
binaryFound = binarySearch(newHalfArray, key);
end
result = binaryFound;
そして、ここでは私の線形検索です:いずれの場合も
function linearFound = linearSearch(a, key)
linearFound = false;
for j=1:length(a)
if a(j) == key
linearFound = true;
end
end
、「」ソートされた整数の配列され、「キー」であります私が探している価値。 配列サイズの範囲で複数のテストを実行し、ランタイムの平均化を行った結果、私のリニア検索はバイナリ検索よりも高速になることがわかりました。私はバイナリ検索がより速くなるはずであることを理論から知っています。私は間違って何をしていますか?
'profile'ツールを使って、Matlabがどこの時間を費やしているかを確認し、それがアルゴリズムや実装の問題であるかどうかを確認することができます。あなたのケースでは、メモリの処理とそれらの「ハーフ」配列の作成が関係していると思いますが、プロファイラはより良いことを伝えることができます –