实现区间二分法,要求用matlab语言编程
时间: 2024-10-09 19:13:20 浏览: 39
matlab实现二分法,迭代法_matlab_二分法_迭代法_
5星 · 资源好评率100%
区间二分法(Binary Search),也称折半查找,是一种用于有序数组中查找特定元素的搜索算法。它通过将数组分为两半来逐步缩小搜索范围,直到找到目标值或确定目标不存在于数组中。以下是使用MATLAB实现区间二分法的基本步骤:
```matlab
function targetIndex = binarySearch(array, target)
% 检查输入是否合法
if ~isnumeric(array) || ~isvector(array) || isnan(array(1)) || isnan(target)
error('Invalid input, array must be a numeric vector and both elements should not be NaN.');
end
% 确保数组按升序排列
array = sort(array);
% 初始化中间索引、左边界和右边界
mid = floor(length(array) / 2);
left = 1;
right = length(array);
while left <= right
% 计算当前中间位置
midIndex = left + floor((right - left) / 2);
% 比较目标值和中间元素
if array(midIndex) == target
targetIndex = midIndex; % 找到目标,返回索引
break;
elseif array(midIndex) < target
left = midIndex + 1; % 目标在右侧,调整左边界
else
right = midIndex - 1; % 目标在左侧,调整右边界
end
end
if isempty(targetIndex), % 如果没找到,返回空
targetIndex = [];
end
end
```
使用这个函数的例子:
```matlab
sortedArray = [1, 3, 5, 7, 9];
target = 5;
resultIndex = binarySearch(sortedArray, target);
disp(['Target ' num2str(target) ' found at index ' num2str(resultIndex)]);
阅读全文