20172314 蓝墨云课堂实践ASL

因为去跳啦啦操没有上课...算法

介绍

折半查找,又称做二分查找。这个查找的算法的特色,就是,要求数据要是有序的。数组

1 ,存储结构必定是顺序存储
2 ,关键字大小必须有序排列性能

而后,利用这组有序的数据之间的关系,来进行折半的查找。.net

比方说,这组数据是升序排列的。一开始,首先对比这组数据的中间的项与关键值(key)的关系。如果关键值(key)>中间值,则说明,关键值(key)在中间值的右侧,所以将这组数据的区间缩小为以中间值为最左侧的小区间。而后,继续用中间值进行比较,以此类推,最终确定会找到在数组当中与之匹配的关键值,直到区间缩小为0还没找到,就只能是关键值(key)不在数组当中blog

算法分析

折半查找,优势是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。所以,折半查找方法适用于不常常变更而查找频繁的有序列表。索引

二分查找的基本思想是将n个元素分红大体相等的两部分,取a[n/2]与x作比较,若是x=a[n/2],则找到x,算法停止。若是x< a[n/2],则只要在数组a的左半部分继续搜索x,若是x>a[n/2],则只要在数组a的右半部搜索x。一直这样搜索下去,时间复杂度为O(log N)get

做业

公式:在n趋于无穷大时,折半查找的ASL=((n+1)log2(n+1))/n - 1,当n大于50时,ASL约等于log2(n+1)-1;搜索

推导:设分块查找中将长为 n 的表分红均等的 b 个块,每块 s 个元素,则 b =(n/s)上取整,若是索引表中采用折半查找,则ASL=(s+1)/2+log2(b+1)-1方法

参考

相关文章
相关标签/搜索