已知线性表具有元素{5,13,19,21,37,56,64,75,80,88,92},如果使用折半查找法,ASL是多少?
知识点1:
- 折半查找法:折半查找,又称作二分查找。这个查找的算法的特点,要求数据要是有序的。然后,利用这组有序的数据之间的关系,来进行折半的查找。比方说,这组数据是升序排列的。一开始,首先对比这组数据的中间的项与所找值的关系。若是所找值>中间值,则说明所找值在中间值的右侧,因此将这组数据的区间缩小为以中间值为最左侧的小区间。然后,继续用中间值进行比较,以此类推,最终肯定会找到在数组当中与之匹配的所找值,直到区间缩小为0还没找到,就只能是所找值不在数组当中。
知识点2:
ASL:是查找算法的查找成功时的平均查找长度的缩写。用于静态查找表中顺序表的查找。对于含有n个记录的表,查找成功时的平均查找长度为:
解题步骤:
总结:
- ASL与数组中具有元素的值无关,只与具有元素的个数有关