20172314 蓝墨云课堂实践ASL

Posted yiyiyi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20172314 蓝墨云课堂实践ASL相关的知识,希望对你有一定的参考价值。

介绍

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

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

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

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

算法分析

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

二分查找的基本思想是将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)

作业

公式:在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

技术分享图片

参考

以上是关于20172314 蓝墨云课堂实践ASL的主要内容,如果未能解决你的问题,请参考以下文章

疫情下的在线上课方案:QQ直播+蓝墨云班课

课堂实践ASL博客

C++程序设计课程主页-2015级

20172303 2018-2019-1 《程序设计与数据结构》第5周课堂实践报告

20172304 蓝墨云实验哈夫曼树

20155317 2016-2017-2 蓝墨云班课考题第2周