一个排列好的从小到大的数组,其长度是n。 假设x在这个数组里面的概率是n/m 。那么使用二分法在这个数组里查找x。 平均要查找多少次?我的想法:如果不在数组里面,概率是(m-n)/m ,共执行 (log2n +1) 次 , 所以期望为 (log2n +1)* (m-n)/m 如果在数组里面,概率是n/m ,有可能执行1,2,3,4....(log2n +1)次..所以期望为n/m*(1*1/n+2*2/n+3*4/n+...+(log2n +1)*2^(log2n)/n)把它们相加,有错吗?为什么我算出来和答案相差很多啊...
解决方案 »
- 图解如何贴代码
- java 反射获取方法问题
- hibernate 怎 么 计 算 hql 的 总 记 录 数 啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- java针打不正常(急!急!急!)
- 请教如何检验用户传入的类型是正确的?
- 我用JB开发了一程序SWING程序,是XXXX.JAVA,请问我要如何才能在别的机子上运行我的程序
- 怎样才能将JTable的某一列的数据显示在单元格中间?
- java读写图片文件
- applet里如何调用Application??application的基类是JFrame
- 谁能解释一下~谢谢~
- HashSet中的hashcode 的问题
- 新人求指导:我有这样一个需求,我现在是客户端,已经给服务端发了数据,服务端给我返回数据,但是服务端给我返回数据的时候,可能出现网络中断的情况,这样,我拿到的数据
1,2,3,4...,log2n不就是等差数列吗,等差数列求和不就是n*(1+n)/2吗
1,2,3,4...,log2n不就是等差数列吗,等差数列求和不就是n*(1+n)/2吗虽然一个数在数组里面的几率是n/m.但是那个数要用多少次找到的概率还是不同啊,
比如只用一次就找到那个数的概率为1/n,用两次找到的概率为2/n ,用三次找到的概率为4/n.....