二分查找失败最大比较次数,二分法查找的最大比较次数
内容实现过程的关键思想:最大最小比较次数的Python实现?线性搜索法1。实施流程示例:
在序列表[10,20,30,40,50,60,70]中,用二分法求关键60。
数值为1020304050607080下标01234567以上,编码为0到7。搜索过程如下:
第一轮
mid=(左/右)/2=(0 7)/2=3,
「向下取整」
-目标值60与下标为3的值40比较,4060,则left=mid 1=4;
第二轮
mid=(左右)/2=(4 ^ 7)/2=5,
「向下取整」
-目标值60与下标为5的60进行比较,60=60。返回下标5,算法结束。
总共进行了两次比较。
2.关键思想在使用二分搜索法之前,您必须确保阵列是有序的;两点每次按mid=(左右)/2向下取整;将目标值与下标为mid的值进行比较;如果目标值较大(较小),则left=mid 1(right=mid 1);直到成功找到目标值,停止。3.最大和最小比较次数最小比较次数为1,如[1,2,3]二分搜索法2。
最大比较次数是log2(n) 1向下舍入,
对于有序表,根据二分搜索法方法的定义,每次比较后问题规模会减少一半,所以2 k=n,解为k=log2(n)。因为最后只剩下一个元素,所以要执行搜索过程,所以1。
4.Python实现了def BinarySearch(arr,Key):left=0 right=len(arr)-1 while left=right:mid=(left right)//2 if Key==arr[mid]:return mide lif(Key arr[mid]):right=mid-1 else:left=mid 1输出:
5.vs线性搜索要在无序数组中查找指定的值,必须遍历整个数组,直到搜索成功。
最小搜索次数为1,即第一个值为目标值;最大搜索次数为n,即最后一个值为目标值;平均搜索次数为(n ^ 1)/2,即(1 ^ 2 ^ 3…n)/n . 6。参考https://blog . csdn . net/u 010992313/article/details/89373480https://blog . csdn . net/iteye _ 3748/article/details/82677136https://blog . csdn . net/PICC _ Lu/URL=DG 930 wgj 8 grwergrrmxzzokxpitf 2 qochft zlqsr 2 kqzfdbuavweswoqnw 8 ckqfqbw