Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 二进制搜索的最坏情况/最佳情况键?_Java_Time_Complexity Theory_Binary Search - Fatal编程技术网

Java 二进制搜索的最坏情况/最佳情况键?

Java 二进制搜索的最坏情况/最佳情况键?,java,time,complexity-theory,binary-search,Java,Time,Complexity Theory,Binary Search,有人能帮我回答这个问题吗?我该如何用数学方法证明这些键 构造任意非平凡数组a,该数组满足二进制 搜索使用 a) worst case lookup time b) best case lookup time 如果与a上的二进制搜索一起使用 查找ka,kb,需要多少个递归步骤?BS的最坏情况是log N,因为这是可能的最大拆分。最佳情况1(立即匹配) 注意-我不想做你的家庭作业,但示意图: 至于最坏情况的证据:尽可能长的分开 从n=n开始。拆分为[0,n/2],计数为n/2,[n/2+1,n)

有人能帮我回答这个问题吗?我该如何用数学方法证明这些键

构造任意非平凡数组a,该数组满足二进制 搜索使用

a) worst case lookup time
b) best case lookup time
如果与a上的二进制搜索一起使用


查找
ka
kb
,需要多少个递归步骤?

BS的最坏情况是log N,因为这是可能的最大拆分。最佳情况1(立即匹配)

注意-我不想做你的家庭作业,但示意图:

  • 至于最坏情况的证据:尽可能长的分开
  • 从n=n开始。拆分为[0,n/2],计数为n/2,[n/2+1,n)计数为n-n/2-1,可能小于1:n为偶数时,n/2-1
  • 所以对于最坏的情况,假设第一个,最长的,一半
  • 这是N的连续一半,得到N/2/2/2…直到我们达到1;这是平方对数N

谢谢您的解释。我的后续问题是:为了获得最坏情况下的运行时,键应该位于什么索引处?例如,键的索引应该是(array.lenth)/2如果您希望最佳情况下的运行时间为1。当您从
mid=N/2
开始并希望在最佳情况下立即成功时,N/2。对于最坏的情况,可能是最长的一半。ka=array[0];kb=array[array.length>>1];läser du algodat?:P