据我所知,对于已排序的数组,二进制搜索是O(logn)。但是,我想知道是否可以计算平均运行时间,并保证搜索值在排序数组中。这种保证使二进制搜索在很短的记录时间内找到搜索值的概率大得多。
即。有1 / n的机会在1步中找到它,2 / n有机会在第2步找到它,等等。
我不确定如何从这种直觉转变为计算平均运行时间。有什么想法吗?
答案 0 :(得分:0)
因此,在步骤i中找到它的概率是2 ^(i-1)。为了确认这是正确的,每一步的概率之和应该等于1.因此,从i = 1到logn的总和为2 ^(i-1)/ n是我们得到的等式,这是相等的到1。
然后,平均运行时间是每一步的概率*步骤#:
从i = 1到i * 2 ^(i-1)/ n
的logn的求和假设n = 16,则平均运行时间为1/16(1 * 1 + 2 * 2 + 3 * 4 + 4 * 8)= 3.125,小于log16 = 4.