本文目录
- 如何用二分查找法查找一个数组中的元素
- 已有从小到大排序的10000个数据,用二分查找法检索最多查多少次即可得出结论
- C语言二分查找法
- 二分查找法
- 二分查找法只适用什么存储结构的线性表,且数据元素必须为什么
- 二分查找法:如有100个元素,查找不成功至少需要多少次查找成功需要多少次
- 二分查找法适用的前提条件其查找的基本思想
如何用二分查找法查找一个数组中的元素
二分查找又叫折半查找,但是有一个前提条件,就是你要查找的数据必须是按顺序储存,以关键字大小来排列的。例如如果是整形数组,存放0~9这10个数,数组必须按0到9(升序)或者9到0(降序)挨个储存。如果你数组的元素之字符串,字符串的首字母就得按a~z或者z~a挨个储存,当最高位相同时比较次高位。当你保证数组有序后,就可以开始执行二分查找了。举个例子1,3,6,8,9,10,11,15如果你要查找的数字是10,查找过程如下由于一共有7个元素,比较最中间的元素,即第四个,10》9,由于是升序排列,选择9的右边三个数进行比较,,这就将比较次数缩短了一半。在右半部分再去中间元素,即11,10《11,选取11左边部分进行比较,即和10进行比较,得到要找的元素。当然也存在找不到的情况,比如找12,先与9比,范围缩小至右半部分,跟11比,在此基础上再缩小至现有右半部分,只剩一个15,不相等, 即没找到想要的元素。这就是一个递归缩小范围的过程
已有从小到大排序的10000个数据,用二分查找法检索最多查多少次即可得出结论
已有从小到大排序的10000个数据,用二分查找法检索最多查14次即可得出结论。
二分查找法计算公式为a《log2(n)《b。a,b,n均为正整数。当顺序表有n个关键字时:查找失败时,至少比较a次关键字;查找成功时,最多比较关键字次数是b。因为2^13-1=8191,2^14-1=16383,所以13《log2(10000)《14。
扩展资料:
二分查找法的查找过程是首先假设表中元素按照升序的排列方式,然后将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功。
否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复计算过程,直至找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找无结果。
C语言二分查找法
#include 《stdio.h》int binfind(int val , int num , int value){int start = 0;int end = num - 1;int mid = (start + end)/2;while(val[mid] != value && start 《 end){if (val[mid] 》 value){end = mid - 1;}else if (val[mid] 《 value){start = mid + 1;}mid = ( start + end )/2; }if (val[mid] == value)return mid;else return -1;}int main(){int nums = {1 , 3 , 4 ,7 ,8 , 12 ,45 ,67 ,97 ,123 ,456 ,675 ,1111 , 4534 , 4563};int result = binfind(nums , sizeof(nums) / sizeof(nums) , 45);if (result 《 0){printf(“查无此数“);} }
二分查找法
总共13个,从0开始,最大是12,使用二分法原则分析如下第一次:12/2=6 , (6)=45《90第二次:(7+12)/2=9,(9)=77《90第三次:(10+12)/2=11,(11)=95》90第四次:((11-1)+10)/2=10,(10)=90 查找成功
二分查找法只适用什么存储结构的线性表,且数据元素必须为什么
说”二分查找法只适用于顺序存储的有序表“是正确的。
说”指线性表中的元素按值非递减排列(即从小到大,但允许相邻元素值相等)“是为了程序的确定性,实际上只要有序就可以,按递减排序也可以用二分法。
二分查找法:如有100个元素,查找不成功至少需要多少次查找成功需要多少次
至少差50次,查找成功要60次。
首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。
重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。
它的基本思想是:(这里假设数组元素呈升序排列)将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止;如 果x《a[n/2],则我们只要在数组a的左半部继续搜索x;如果x》a[n/2],则我们只要在数组a的右 半部继续搜索x。
二分查找法适用的前提条件其查找的基本思想
适用的前提条件:1. 存储在数组中(例如一维数组) 2. 数组元素为有序(例如升序)查找的基本思想:折半查找,设查找的元素为value value与中间元素(middle = left + (right -left) / 2这样做的好处防止中间元素出现越界)比较,若比中间值小则查找范围在middle + 1继续查找,若比中间值大则查找范围在middle -1,若与中间值相等则查找结束索引元素为value = middle。