假定对有序表{5, 13, 19, 21, 37, 56, 64, 75, 80, 88, 92}进行折半查找,设计算
法查找数据元素为“88”和“90”:若查找成功,返回该元素在有序表中的位置;
若查找失败,显示 “查找失败”;同时统计并输出查找比较次数。
1. 假定对有序表{5, 13, 19, 21, 37, 56, 64, 75, 80, 88, 92}进行折半查找,设计算 法查找数据元素为“88”和“90”:若查找成功,返回该元素在有序表中的位置;
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
阿里嘎多学长 2025-12-26 21:48关注阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
折半查找算法
折半查找是一种常见的查找算法,适用于有序表。下面是对有序表{5, 13, 19, 21, 37, 56, 64, 75, 80, 88, 92}进行折半查找的设计算法:
查找元素88
- 将有序表的长度取为n,计算中间索引为n/2。
- 比较中间元素88与目标元素88,发现它们相等。
- 返回中间索引,即88在有序表中的位置为5。
查找元素90
- 将有序表的长度取为n,计算中间索引为n/2。
- 比较中间元素88与目标元素90,发现它们不相等。
- 由于目标元素90大于中间元素88,调整查找范围为右半部分。
- 重复步骤1-3,直到找到目标元素90或确定其不在有序表中。
- 在本例中,目标元素90不在有序表中。
核心代码
def binary_search(arr, target): n = len(arr) left, right = 0, n - 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 # 表示目标元素不在有序表中 arr = [5, 13, 19, 21, 37, 56, 64, 75, 80, 88, 92] print(binary_search(arr, 88)) # 输出: 9 print(binary_search(arr, 90)) # 输出: -1注意: 这个实现使用Python语言,使用二分查找算法查找目标元素。
解决 无用评论 打赏 举报