【发布时间】:2017-07-21 14:36:19
【问题描述】:
这是我的二进制搜索代码:
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
在这两种情况下,“a”都是排序整数数组,“key”是我要查找的值。 在使用一系列数组大小和平均运行时间运行多个测试后,我始终发现我的线性搜索比我的二进制搜索更快。我从理论上知道二进制搜索应该更快。我做错了什么?
【问题讨论】:
-
您可以使用
profile工具检查Matlab在哪里花费时间,看看是算法问题还是您的实现问题。我想,在你的情况下,它与内存处理和创建那些“半”数组有关,但分析器可以更好地告诉你
标签: matlab runtime binary-search linear-search