今天给各位分享二分查找的分查方根知识,其中也会对二分查找是找分一个有效计算平方根进行解释,如果能碰巧解决你现在面临的查找问题,别忘了关注本站,效计现在开始吧!算平
基本算法——二分查找算法
二分查找也称折半查找(Binary Search),分查方根它是找分一种效率较高的查找方法。但是查找,折半查找要求线性表必须采用顺序存储结构,效计而且表中元素按关键字有序排列。算平
1.条件
(1)必须采用 顺序存储结构 。分查方根
(2)必须按关键字大小有序排列。找分
2.步奏
(1)首先,查找假设表中元素是效计按升序排列,将表中间位置记录的算平 关键字 与查找关键字比较,如果两者相等,则查找成功;
(2)否则利用中间位置 记录 将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表;
(3)重复以上过程,直到找到满足条件的 记录 ,使查找成功,或直到子表不存在为止,此时查找不成功。
3.举例
有一组元素{ 1,2,3,4,5,6,7,8,9},如何查到元素为3。
(1)找到数组中中间元素值5,不等于3,所以把数组分为{ 1,2,3,4},{ 5,6,7,8,9};
(2)因为5大于3,所以3在前一个数组{ 1,2,3,4}中查找,中间变量2,3比2大,所以在{ 3,4}中查询;
(3)查询到3=3,成功。
4.复杂度
最好的情况下,1次查询成功;最坏的情况下,查询到最后两个数或者最后也查不到相等数,时间复杂度为O(log2n)。
二分查找法
二分查找法的解释如下:
二分查找法也称折半查找法,是一种在有序数组中查找某一特定元素的搜索算法。我们可以从定义可知,运用二分搜索的前提是数组必须是有序的,这里需要注意的是,我们的输入不一定是数组,也可以是数组中某一区间的起始位置和终止位置。
如果想要在数组中查找一个数,最基本的方法就是暴力解法:一次遍历,这时候时间复杂度是O(N),二分查找就是其中的一种优化,时间复杂度是O(logN);具体做法是一步一步逼近直到找到。前提是数组需要是一个排序数组。
查找过程:
首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功。
否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。
重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
算法要求:
1、必须采用顺序存储结构。
2、必须按关键字大小有序排列。
比较次数
计算公式:
当顺序表有n个关键字时:
查找失败时,至少比较a次关键字;查找成功时,最多比较关键字次数是b。
注意:a,b,n均为正整数。
二分查找算法
二分查找算法,该算法要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。如果一个序列是无序的或者是链表,那么该序列就不能使用二分查找。
二分查找算法原理:若待查序列为空,则返回-1,并退出算法;若待查序列不为空,则将它的中间元素与目标数值进行比较,判断是否相等;若相等,则返回中间元素索引,并退出算法;此时已查找成功。若不相等,则比较中间元素与目标数值的大小。
若中间元素目标数值,则将当前序列的前半部分作为新的待查序列;若中间元素目标数值,则将当前序列的后半部分作为新的待查序列;在新的序列上重新从第(1)步开始查找。
二分法查找的思路:首先,从数组的中间元素开始搜索,如果该元素是目标元素,则搜索过程结束,否则执行下一步。如果目标元素大于/小于中间元素,则在数组大于/小于中间元素的那一半区域查找,然后重复步骤(1)的操作。如果某一步数组为空,则表示找不到目标元素。
二分查找的一个技巧是:不要出现else,而是把所有情况用else,if写清楚,这样可以清楚地展现所有细节。本文都会使用else,if,旨在讲清楚,读者理解后可自行简化。
二分查找的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于二分查找是一个有效计算平方根、二分查找的信息别忘了在本站进行查找喔。


相关文章




精彩导读
热门资讯
关注我们