K分查找时间复杂度推导
问题描述
类比二分搜索算法,设计k分搜索算法(k为大于2的整数)如下:首先检查n/k处(n为被搜索集合的元素个数)的元素是否等于要搜索的值,然后检查2n/k处的元素,……,这样,或者找到要搜索的元素,或者把集合缩小到原来的1/k;如果未找到要搜索的元素,则继续在得到的集合上进行k分搜索;如此进行,直到找到要搜索的元素或搜索失败。求时间复杂度。
因为我并不认可王道书上这道题的答案,所以自己尝试证明了一下K分查找的时间复杂度。
本题的思路是:基于K分查找的判定树,写出K分查找的时间复杂度递推公式,可以计算其时间复杂度。
我认为王道书错误的地方在于认为K分查找的判断树是K叉树,实际上K分查找的判断树应当是二叉树。
K分查找判定树
时间复杂度简要推导过程
由K分查找的判断树可知K分查找的时间复杂度递推公式
从而
所以时间复杂度用大O表示法为