4.写出二分查找算法(matlab 或C系列)。
时间: 2024-10-24 10:11:19 浏览: 8
二分查找算法是一种高效的搜索排序数组的方法。以下是使用MATLAB语言编写的二分查找算法示例:
```matlab
function index = binarySearch(array, target)
% 确保数组已排序
if ~issorted(array)
error('Array must be sorted in ascending order.');
end
% 初始化搜索边界
low = 1;
high = length(array);
% 当低索引小于等于高索引时继续搜索
while low <= high
mid = floor((low + high) / 2); % 计算中间索引
if array(mid) == target % 如果目标值等于中间元素
index = mid; % 返回索引
break;
elseif array(mid) < target % 如果目标值大于中间元素,则搜索右半部分
low = mid + 1;
else % 否则搜索左半部分
high = mid - 1;
end
end
% 没找到目标时返回空值
if index == 0
index = -1; % 表示目标不存在于数组中
end
end
```
对于C语言,二分查找的实现类似:
```c
#include <stdio.h>
int binary_search(int arr[], int n, int target) {
int low = 0, high = n - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (arr[mid] == target) {
return mid; // 找到目标,返回其索引
} else if (arr[mid] < target) {
low = mid + 1; // 目标在右半部分
} else {
high = mid - 1; // 目标在左半部分
}
}
return -1; // 没有找到目标,返回-1
}
// 示例
int main() {
int array[] = {1, 3, 5, 7, 9};
int n = sizeof(array) / sizeof(array[0]);
int target = 5;
int index = binary_search(array, n, target);
if (index != -1) {
printf("Element found at index: %d\n", index);
} else {
printf("Element not found.\n");
}
return 0;
}
```
阅读全文