目录
二分搜索(适用于有序字符串数组)
基本概念 二分搜索(Binary Search)是一种高效的查找算法,适用于在有序数组中查找特定元素。与线性搜索相比,二分搜索通过逐步减少搜索范围,大幅提高查找效率。
算法步骤
- 确定中间元素:首先计算数组的中间索引
mid,并获取该索引处的元素mid_val。 - 比较目标字符串:
-
- 如果目标字符串等于
mid_val,则查找成功,返回该索引。 - 如果目标字符串小于
mid_val,则在数组的左半部分继续搜索。 - 如果目标字符串大于
mid_val,则在数组的右半部分继续搜索。
- 如果目标字符串等于
- 递归或迭代:根据以上步骤不断递归地搜索左半部分或右半部分,直到找到目标字符串或搜索区间缩小到空区间(未找到)。
代码示例
python语言:
def binary_search(arr, target):
left, right = 0, len(arr) - 1
while left <= right:p
mid = left + (right - left) // 2 # 避免溢出
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1 # 未找到
# 示例使用
arr = ["apple", "banana", "cherry", "date", "fig", "grape"]
target = "date"
result = binary_search(arr, target)
if result != -1:
print(f"字符串'{target}'在索引 {result} 处找到。")
else:
print(f"字符串'{target}'未找到。")
C语言:
#include <stdio.h>
#include <string.h>
// 二分查找函数
int binarySearch(char *arr[], char *target, int left, int right) {
while (left <= right) {
int mid = left + (right - left) / 2;
if (strcmp(arr[mid], target) == 0) {
return mid;
} else if (strcmp(arr[mid], target) < 0) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
// 测试示例
int main() {
char *ar

最低0.47元/天 解锁文章
1428

被折叠的 条评论
为什么被折叠?



