python实现–顺序查找
python实现–折半查找
python实现–分块查找
python实现B/B+树
折半查找(Binary Search),也称为二分查找,是一种高效的查找算法,适用于有序数组或列表。它的基本思想是通过每次将查找范围缩小为原来的一半来逼近目标元素,直到找到目标元素或者确定目标元素不存在。
实现思路:
确定查找范围:初始化左边界 left 和右边界 right,初始时左边界为0,右边界为数组长度减1。
计算中间位置:通过 (left + right) // 2 计算中间位置 mid。
比较目标值:将目标值与中间位置的元素进行比较。
如果目标值等于中间位置的元素,则返回中间位置作为查找结果。
如果目标值小于中间位置的元素,则更新右边界 right = mid - 1,缩小查找范围为左半部分。
如果目标值大于中间位置的元素,则更新左边界 left = mid + 1,缩小查找范围为右半部分。
重复步骤2和步骤3,直到找到目标元素或者确定目标元素不存在为止。
def binary_search(arr, target):
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid # 找到目标元素,返回索引
elif arr[mid] < target:
left = mid + 1 # 缩小查找范围为右半部分
else:
right = mid - 1 # 缩小查找范围为左半部分
return -1 # 未找到目标元素,返回-1
# 测试
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target = 7
index = binary_search(arr, target)
if index != -1:
print(f"目标元素 {target} 在数组中的索引为:{index}")
else:
print(f"未找到目标元素 {target}")
以上代码实现了折半查找算法。通过不断缩小查找范围,折半查找算法可以在时间复杂度为 O(log n) 的情况下找到目标元素,其中 n 为数组的长度。这使得折半查找成为一种非常高效的查找算法,特别适用于大型有序数据集合的查找操作。