折半查找法matlab源代码
时间: 2024-09-07 20:02:38 浏览: 39
折半查找算法及matlab代码实现
折半查找法,也称为二分查找法,是一种在有序数组中查找特定元素的高效算法。基本思想是将数组分为两半,比较中间元素与目标值,根据比较结果决定是在左半部分还是右半部分继续查找,从而逐步缩小查找范围,直到找到目标元素或者确定元素不存在为止。
以下是一个在MATLAB中实现的折半查找法的简单示例代码:
```matlab
function index = binary_search(sorted_array, target)
% 初始化查找范围的上下界
lower_bound = 1;
upper_bound = length(sorted_array);
% 当下界不超过上界时循环查找
while lower_bound <= upper_bound
% 计算中间位置
mid = ceil((lower_bound + upper_bound) / 2);
% 比较中间元素与目标值
if sorted_array(mid) == target
% 找到目标元素,返回其索引
index = mid;
return;
elseif sorted_array(mid) < target
% 如果中间元素小于目标值,调整下界
lower_bound = mid + 1;
else
% 如果中间元素大于目标值,调整上界
upper_bound = mid - 1;
end
end
% 如果未找到目标元素,返回-1表示未找到
index = -1;
end
```
使用这个函数时,你需要先保证数组是有序的,然后传入数组和要查找的目标值即可。例如:
```matlab
sortedArray = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19];
targetValue = 9;
index = binary_search(sortedArray, targetValue);
if index > 0
fprintf('找到目标值在数组的位置:%d\n', index);
else
fprintf('未找到目标值。\n');
end
```
阅读全文