在长度为n的有序线性表中进行二分查找,需要的比较次数为什么是:以2为底n的对数 要详细的解答过程

2025-01-04 06:23:52
推荐回答(2个)
回答1:

二分查找的基本思想是将n个元素分成大致相等的两部分,去a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果xa[n/2],则只要在数组a的右半部搜索x. 时间复杂度无非就是while循环的次数! 总共有n个元素, 渐渐跟下去就是n,n/2,n/4,....n/2^k,其中k就是循环的次数 由于你n/2^k取整后>=1 即令n/2^k=1 可得k=log2n,(是以2为底,n的对数)

回答2:

既然有序,每一次取表的中间的那个数字。如果是等于拿最好了,如果不是的话,小于中间值就取左边的,大于就取右边的。如果最多需要m次才才能找到最后的结果的话 说明2^m=n 所以m=log2 m