×

二分法查找

二分法查找的介绍?使用二分法查找算法的 前提条件是 被查数据必须是自然数对吗

admin admin 发表于2022-05-03 23:03:11 浏览130 评论0

抢沙发发表评论

二分法查找的介绍

算法:当数据量很大适宜采用该方法。采用二分法查找时,数据需是排好序的。主要思想是:(设查找的数组区间为array[low, high])(1)确定该期间的中间位置K(2)将查找的值T与array[k]比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。区域确定如下:a.array[k]》T 由数组的有序性可知array[k,k+1,……,high]》T;故新的区间为array[low,……,K-1]b.array[k]《T 类似上面查找区间为array[k+1,……,high]。每一次查找与中间值比较,可以确定是否查找成功,不成功当前查找区间缩小一半。递归找,即可,时间复杂度:O(log2n)。

使用二分法查找算法的 前提条件是 被查数据必须是自然数对吗

前提是被查数据必须有序(升序或降序)。

算法:当数据量很大适宜采用该方法。采用二分法查找时,数据需是排好序的。

基本思想:假设数据是按升序排序的,对于给定值key,从序列的中间位置k开始比较,如果当前位置arr[k]值等于key,则查找成功;若key小于当前位置值arr[k],则在数列的前半段中查找,arr[low,mid-1];-二分法查找

若key大于当前位置值arr[k],则在数列的后半段中继续查找arr[mid+1,high],直到找到为止,时间复杂度:O(log(n))。

扩展资料:

给定精确度ξ,用二分法求函数f(x)零点近似值的步骤如下:

1、确定区间[a,b],验证f(a)·f(b)《0,给定精确度ξ。

2、求区间(a,b)的中点c。

3、计算f(c).

(1) 若f(c)=0,则c就是函数的零点。

(2) 若f(a)·f(c)《0,则令b=c。

(3) 若f(c)·f(b)《0,则令a=c。

(4) 判断是否达到精确度ξ:即若|a-b|《ξ,则得到零点近似值a(或b),否则重复2-4。

参考资料来源:百度百科-二分法

C语言二分法查找

#include 《stdio.h》//不用math头文件void main(){int high = 9,low = 0,m,k,a={1,2,3,4,5,6,7,8,9,10};//hing和low赋初值 scanf(“%d“,&k); while (high》=low)//》= { m=(high+low)/2; if(k《a[m]) high=m-1;//比较的是数值而不是下标 else if(k》a[m]) low=m+1; else { printf(“yes“); return;//这两句地方放错了 } } printf(“no“); return;//if语句去掉 }