在有20个元素的有序数组a上进行二分查找,在等概率情况下查找成功的平均长度为
时间: 2023-09-25 21:06:59 浏览: 75
### 回答1:
在有序数组中进行二分查找的时间复杂度为 O(log n),其中 n 表示数组中元素的个数。在等概率情况下,每次查找的目标值有一半的可能性在数组的左半部分,有一半的可能性在右半部分。因此,在平均情况下,每次查找可以将数组长度减半。
假设数组长度为 n=20,则进行二分查找成功的平均长度为 log2(20)≈4.32。也就是说,需要进行 4-5 次比较才能找到目标值。
### 回答2:
二分查找是一种在有序数组中进行查找的算法,每次将待查找的区间缩小一半,直到找到目标元素或区间为空。
对于有20个元素的有序数组a,我们需要进行多少次二分查找才能找到目标元素,即平均查找长度为多少呢?
我们可以计算二分查找的平均查找长度。假设待查找的元素在数组中的位置是等概率的,即每个位置被查找到的概率为1/20。
初次查找时,待查找的区间为整个数组,长度为20,需要进行1次比较。若未找到,则下一次查找的区间长度减半为10,需要进行2次比较。若仍未找到,则下一次查找的区间长度再减半为5,需要进行3次比较。以此类推,直到找到目标元素或区间为空。
假设找到目标元素时,已经进行了k次比较,则有:1 * (1/20) + 2 * (1/20) + 3 * (1/20) + ... + k * (1/20) = (k * (k+1))/(20 * 2)。
由于数组中目标元素的位置是等概率的,所以需要对所有可能的位置求和,即求和范围从1到20:(1 * (1/20) + 2 * (1/20) + 3 * (1/20) + ... + k * (1/20)) * 20。
将上述公式代入,得到二分查找成功的平均长度为:(1/2) * ((1+1) * 1 + (2+1) * 2 + (3+1) * 3 + ... + (20+1) * 20) = (1/2) * (420 + 20 * 21) = 210 + 210 = 420。
因此,在等概率情况下,对于有20个元素的有序数组a进行二分查找,平均长度为420。
### 回答3:
在有20个元素的有序数组上进行二分查找,查找成功的平均长度可以用猜测次数的期望来表示。
二分查找的过程是将待查找区间中位数与目标值进行比较,并根据比较结果缩小查找范围,直至找到目标值或确定目标值不存在。
在等概率情况下,每一次比较都有50%的概率小于目标值,50%的概率大于目标值。假设查找目标值需要n次比较,那么有以下两种情况:
1. 第k次比较目标值被找到,其中1 ≤ k ≤ n。每次比较都根据中位数和目标值的大小关系决定下一次比较的范围。
2. 第n次比较目标值未找到。这表示在数组的查找区间内仅剩下一个数,而该数不等于目标值。
对于情况1,根据等概率的特性,有k次比较在数组中找到目标值的概率为 1/2^k。而在这k次比较过程中,每次比较都将查找范围缩小一半,所以查找成功的平均长度为 ∑(k=1 to n) (k * (1/2^k))。
对于情况2,由于数组中仅剩下一个数,且不等于目标值,所以这次比较长度为1。
综上所述,查找成功的平均长度为 ∑(k=1 to n) (k * (1/2^k)) / 20 + 1。其中,n≤20。
以上就是在有20个元素的有序数组上进行二分查找,在等概率情况下查找成功的平均长度的计算方法。