若有19个元素的有序表,存放在一维数组A种元素下标从零到18进行二分查找,则查找A2的比较序列的下标依次为
时间: 2024-04-01 15:35:27 浏览: 14
二分查找的过程中,每次将待查找区间的中间位置与目标值进行比较,然后根据比较结果缩小待查找区间,直到找到目标值或者待查找区间为空。
对于这道题,按照二分查找的流程,查找A2的比较序列的下标依次为:
1. 初始时,待查找区间为[0, 18],中间位置为9,A[9]=10,A[9]<A[2],所以待查找区间缩小为[10, 18]。
2. 在区间[10, 18]中查找,中间位置为14,A[14]=15,A[14]>A[2],所以待查找区间缩小为[10, 13]。
3. 在区间[10, 13]中查找,中间位置为11,A[11]=12,A[11]>A[2],所以待查找区间缩小为[10, 10]。
4. 在区间[10, 10]中查找,中间位置为10,A[10]=2,A[10]=A[2],找到目标值,返回下标10。
因此,A2的比较序列的下标依次为9、14、11、10。
相关问题
若有18个元素的有序表存放在一维数组 A[19]中,第一个元素放在 A[1]中,现进行二分查找,则查找 A[3]的比较序列的下标依次为
二分查找的基本思想是:在有序表中,先取中间位置的记录进行比较,如果要查找的关键字小于中间位置记录的关键字,则在中间位置的左半区继续查找;如果要查找的关键字大于中间位置记录的关键字,则在中间位置的右半区继续查找,直到查找成功或失败为止。
对于有序表 A[19],进行二分查找,首先需要确定查找区间的左右边界,即 low 和 high 的值,由于 A[1] 到 A[18] 共有 18 个元素,因此可取 low=1,high=18。接下来,需要通过比较中间元素 A[mid] 和查找关键字的大小来缩小查找范围,其中 mid=(low+high)/2。
第一次比较时,mid=9,A[mid]=A[9]=?,因为题目没有给出具体的数据,因此无法确定 A[9] 的值,只能假设 A[9] 的值为 x,若 x<A[3],则继续在 A[1] 到 A[8] 的区间内查找,即 high=mid-1=8;若 x>A[3],则继续在 A[10] 到 A[18] 的区间内查找,即 low=mid+1=10;若 x=A[3],则查找成功,返回 mid=9。
第二次比较时,mid=4,A[mid]=A[4]=?,若 A[4]<A[3],则继续在 A[5] 到 A[8] 的区间内查找,即 high=mid-1=3;若 A[4]>A[3],则继续在 A[1] 到 A[3] 的区间内查找,即 low=1,high=mid-1=3,此时 mid=(1+3)/2=2,A[mid]=A[2]=?,若 A[2]<A[3],则继续在 A[3] 到 A[3] 的区间内查找,即 high=low=3;若 A[2]>A[3],则继续在 A[1] 到 A[1] 的区间内查找,即 high=low=1;若 A[2]=A[3],则查找成功,返回 mid=2。
因此,查找 A[3] 的比较序列的下标依次为 9、2。
若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为( )。
由于有序表存放在一维数组 A[19] 中,且第一个元素放在 A[1] 中,因此可以得到要查找的元素 A[3] 的值为 A[3] = A[1 + 3 - 1] = A[3]。
在二分查找过程中,需要不断确定中间位置,将查找范围缩小一半。具体步骤如下:
1. 确定查找范围的左右边界,初始时左边界为 1,右边界为 18。
2. 确定中间位置,即 (1 + 18) / 2 = 9。
3. 比较中间位置的元素 A[9] 与要查找的元素 A[3],由于 A[9] > A[3],所以要查找的元素在左半部分。
4. 确定新的查找范围的右边界为中间位置减 1,即 right = 9 - 1 = 8。
5. 确定新的中间位置,即 (1 + 8) / 2 = 4。
6. 比较中间位置的元素 A[4] 与要查找的元素 A[3],由于 A[4] < A[3],所以要查找的元素在右半部分。
7. 确定新的查找范围的左边界为中间位置加 1,即 left = 4 + 1 = 5。
8. 确定新的中间位置,即 (5 + 8) / 2 = 6。
9. 比较中间位置的元素 A[6] 与要查找的元素 A[3],由于 A[6] > A[3],所以要查找的元素在左半部分。
10. 确定新的查找范围的右边界为中间位置减 1,即 right = 6 - 1 = 5。
此时查找范围已经缩小到只有一个元素 A[5],并且 A[5] < A[3],因此查找失败。
因此,查找 A[3] 的比较序列的下标依次为 9、4、6、5。