试题四(15分,算法设计)
阅读下列说明和 C 代码,回答问题 1 至问题 3。
【说明】采用二分查找算法,在有序递增数组 arr 中查找目标 key。若找到返回对应数组下标;未找到返回 - 1。
int BinarySearch(int arr[],int n,int key){
int low=0,high=n-1;
while(low key){
high = mid -1;
}else{
low = mid +1;
}
}
return -1;
}
【问题2】(5分)给定数组 arr={2,5,8,12,16,23,38,56,72,91},查找 key=23,写出每一轮 low、high、mid 取值。
参考答案初始 low=0,high=9 第 1 轮 mid=4,arr [4]=16 < 23 → low=5 第 2 轮 mid=7,arr [7]=56 >23 → high=6 第 3 轮 mid=5,arr [5]=23,找到,返回下标 5
解析:按照代码逻辑一步步计算区间中点,对比中间元素调整查找边界。