问题
单项选择题
类比二分搜索算法,设计k分搜索算法(k为大于2的整数)如下:首先检查n/k处(n为被搜索集合的元素个数)的元素是否等于要搜索的值,然后检查2n/k处的元素,……,这样,或者找到要搜索的元素,或者把集合缩小到原来的1/k;如果未找到要搜索的元素,则继续在得到的集合上进行k分搜索;如此进行,直到找到要搜索的元素或搜索失败。此k分搜索算法在最坏情况下搜索成功的时间复杂度为 (57) ,在最好情况下搜索失败的时间复杂度为 (58) 。
(58)处填()。
A.O(log n)
B.O(n log n)
C.O(logk n)
D.O(n logk n)
答案
参考答案:C
解析:
与二分法查找类似,k分查找法可用k叉树来描述。k分查找法在查找成功时进行比较的关键个数最多不超过树的深度,而具有n个结点的k叉树的深度为 [logkn(k+1)]+1,所以,k叉查找法在查找成功时和给定值进行比较的关键字个数至多为 [logk n]+1,即时间复杂度为O(logk n)。同时,k分查找法在查找不成功时,和给定值进行比较的关键字个数也至多为[logkn(k+1)]+1,即时间复杂度为O(logkn)。