BinarySearch也称为二分搜索(BinarySearch),是一种效率更高的搜索方法。但是二分查找要求线性表必须采用顺序存储结构,表中的元素按照key顺序排列。查找过程首先,假设表中的元素是按升序排列的,将记录在表中间位置的key与查找key进行比较,若两者相等则查找成功;否则,使用中间位置记录将表分成两个子表,如果中间位置记录的key大于查找key,则继续查找前一个子表,否则继续查找后一个子表。重复上述过程,直到找到满足条件的记录,使查找成功,或者直到子表不存在,此时查找不成功。比对次数计算公式:当序列表有n个关键词时:查找失败时,至少比对a次关键词;当搜索成功时,关键字的最大比较次数为b。注:a、b、n均为正整数。算法复杂度二分查找的基本思想是将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的对数),所以时间复杂度可以表示为O(h)=O(log2n)下面提供二分查找的伪代码:BinarySearch(max,min,des)mid-<(max+min)/2while(min<=max)mid=(min+max)/2ifmid=desthenreturnmidelsifmid>desthenmax=mid-1elsemin=mid+1returnmax半查找法也叫二分查找法,它充分利用了元素之间的顺序关系,采用一种分而治之的策略,在最坏的情况下可以用O(logn)完成搜索任务。它的基本思想是:(这里假设数组元素按升序排列)将n个元素分成数量大致相同的两半,取a[n/2]和你要找的x比较,如果x=a[n/2]然后求x,算法结束;如果xa[n/2],那么我们只需要在数组a的右半部分继续寻找x即可。以上就是二分查找算法的详细内容,希望对大家有所帮助。传送门:更多资源!---二分查找算法详解相关文章:如何用Python写循环语句如何用PHP+HTML+JavaScript+css实现简单的爬虫开发详解你知道什么是java方法重载吗?系统理解PHP中的错误和异常什么是java中的错误
