二分查找的平均查找长度
二分查找的平均查找长度
对二分查找的平均查找长度进行简单分析。
向作出假设:要查找的元素在数组内,数组长度为 nnn. 约定对长度为 nnn 的数组,平均查找长度为随机变量 CnC_nCn,随机变量 InI_nIn 定义如下
In={1要查找的关键字是这个长度为n的数组的中间的关键字0otherwise,I_n=\left\{ \begin{matrix} 1 & 要查找的关键字是这个长度为 n 的数组的中间的关键字\\ 0 & \mathrm{otherwise} \end{matrix} \right., In={10要查找的关键字是这个长度为n的数组的中间的关键字otherwise,
那么
Cn=In+(1−In)(Cn/2+1),C_n=I_n+(1-I_n)(C_{n/2}+1), Cn=In+(1−In)(Cn/2+1),
取其期望值
E(Cn)=1n+(1−1n)E(Cn/2+1)<1n+1+E(Cn/2),E(C_n)=\frac1n+\left(1-\frac1n\right)E(C_{n/2}+1)<\frac1n+1+E(C_{n/2}), E(Cn)=n1+(1−n1)E(Cn/2+1)<n1+1+E(Cn/2),
展开
E(Cn)=1+⋯+2⌊logn⌋n+⌊logn⌋+c=Θ(logn).E(C_n)=\frac{1+\cdots+2^{\lfloor\log{n}\rfloor}}n+\lfloor\log{n}\rfloor+c=\Theta(\log {n}). E(Cn)=n1+⋯+2⌊logn⌋+⌊logn⌋+c=Θ(logn).
简单分析,还有很多不完备的地方。
二分查找的平均查找长度相关推荐
- 二分查找的平均查找长度_二分查找(折半查找)代码实现
整理不易,手有余香请点赞! 折半查找,也称二分查找,在某些情况下相比于顺序查找,使用折半查找算法的效率更高.但是该算法的使用的前提是静态查找表中的数据必须是有序的. 在折半查找之前对查找表按照所查的关 ...
- [时间复杂度]为什么采用二叉排序树查找的平均查找长度为O(log2n)
###二分法求数值x的整数n次幂 有没有O(log n)的方法呢?得二分思想了.这里的二分是指减少乘法的次数,把重复的运算省去.我要求x的n次方,那么先求x的n/2次方,然后两个相乘起来.如此递归下去 ...
- 散列表查找失败平均查找长度
如果你看了很多其他博客然后都看不懂看到了这篇,你一定可以容易懂的!我佛了,这么简单的东西死板地讲题目不讲原理鬼看得懂啊,这种风气真的不行,我忍不住想骂一声垃圾,啥玩意儿,误人子弟!原理懂了啥题不会做? ...
- 数据结构 顺序查找和折半查找的平均查找长度分析关于ASL(平均查找长度)的简单总结
顺序查找 折半查找的平均查找长度分析 ASL:平均查找长度 其中n为查找表中元素个数,Pi为查找第i个元素的概率,通常假设每个元素查找概率相同,Pi=1/n,Ci是找到第i个元素的比较次数. A S ...
- 二分查找的平均查找长度详解【转】
来源:http://blog.csdn.net/turne/article/details/50488378 看数据结构书的时候碰上的内容,我自己将它化成关于级数的题,然后自己算的过程,基本就是等比级 ...
- 二分查找的平均查找长度_二分查找
1.什么是二分查找 数据的查找在计算机的操作中非常常见,那么我们应该怎样在计算机中实现查找操作呢? 最简单的一种方法:"傻找",也就是一个一个的找,我们把数组中的每个元素都和我们想 ...
- 【数据结构和算法笔记】线性表的查找(平均查找长度,二分法,判定树)
查找: 给定一个值k,在含有n个元素的表中找出关键字等于k的元素,若找到,则查找成功,否则,查找失败 查找前首先确定(1)存放数据的数据结构是什么(2)元素是否有序 动态查找表:查找的同时做修改操作( ...
- 折半查找判定树 二叉排序树 查找成功平均查找长度 查找失败平均查找长度
写在前边的话:你的支持是我写作的动力,有帮助到你的话麻烦点赞加收藏呦.感激不尽!如有错误也请留言指正. 考研数据结构练习,欢迎订阅我的专辑<考研数据结构题型分类讲解练习> [哈尔滨工业大学 ...
- 如何计算折半查找的平均查找长度?
首先,折半查找可以借助于一个二叉树来描述. 为了简化讨论,则把这棵树近似看成满二叉树,设二叉树的高度为h(h>1) 则,根据二叉树的性质,它有最大节点数, 则 (2是底数).那么二叉树的第j层节 ...
- 折半查找的平均查找次数分析
前面我们讨论过在有序顺序表的查找树中,是最不平衡树,关键字有n个,则查找失败的结点有n+1个.把这个一般化,性质不变,也即:查找失败结点仍然是n+1个.这个性质在B树部分也是成立的,不做严格推导,只引 ...
最新文章
- 图灵新浪微博赠书活动
- Linux网络通信管理
- 更新源列表及设置方法
- 【洛谷】【动态规划/二维背包】P1855 榨取kkksc03
- leetcode 1047. Remove All Adjacent Duplicates In String | 1047. 删除字符串中的所有相邻重复项(Java)
- C++ vector容器类型
- 历时四年,给Google提交的Android Framework Bug终于被Fixed了
- 浪费了4年后,公司的产品小哥去快手搞 Java 了
- 程序员如何达到年薪百万?java程序员必读书籍!
- win11右键菜单怎么修改 Windows11修改右键菜单为win10风格的步骤方法
- 拓端tecdat|R语言:EM算法和高斯混合模型的实现
- 【Vegas原创】ctrl shift无法切换输入法的解决方法
- socket与模拟http请求
- java web 分页 基于sql 2005 数据库
- Bootstrap框架
- 考勤月度统计mysql_考勤查询统计SQL脚本
- 玉米社:百度SEM竞价推广的投放地域设置技巧
- 安卓手机做服务器(django),完成废物利用
- Java实现谷歌验证器
- 51单片机和LCD1602实现简单的密码锁