我需要解决三元搜索的平均情况复杂性。在最坏的情况下,你会做两次比较,所以我认为最坏的情况复杂性如下:
C(n) = C(n/3) + 2
然后可以显示为O(logn),但是普通情况会是什么样子?我在想这个:
C(n) = C(n/3) + 1.5
因为平均而言,您可以进行1或2次比较,因此(1 + 2)/ 3 = 1.5
答案 0 :(得分:1)
如果我们都在谈论搜索元素是一个排序数组,我认为平均而言你将不得不进行5/3比较。 假设您首先检查要找到的元素x是高于还是低于放置在A(n / 3)中的元素,其中A是您的排序数组,n是它的长度。 统计上,由于1/3的元素低于A(n / 3),2/3更高,因此x有1/3的机会更低,2/3的机会更高。 如果x较低,则不需要进行第二次比较,因此您只需要1。 如果x更高,则需要将其与A(2n / 3)进行比较,因此您需要2。 所以平均来说,你需要(1/3)* 1 +(2/3)* 2 = 5/3。
但这并没有改变全局复杂性的任何东西,它总是O(log n)。唯一的区别是常数因素。