用递归算法实现n个不同元素的有序序列的折半查找,采用一个递归工作栈时,该栈的最小容量应为( )。

admin2019-12-10  16

问题 用递归算法实现n个不同元素的有序序列的折半查找,采用一个递归工作栈时,该栈的最小容量应为(    )。

选项 A、n   
B、[n/2]   
C、[log2n]   
D、[log2n]+1

答案D

解析 根据折半查找的过程,由于需要栈结构实现递归算法,栈的容量应该保证能存放查找失败时所有未完成运行的算法的活动记录。
第一次调用该算法时,栈中加入了一条查找记录,表示待查有序表中元素的个数为n;第二次调用时,无论是在前半区还是后半区查找,栈中又加入了一条查找记录,所确定的查找区间中的元素最多为n/2;第三次调用时,栈中又加入了一条查找记录,所确定的查找区间中的元素最多为n/4;依次类推,当所确定的查找区间中的元素为0时,递归调用该算法的次数为[ log2n]+1次,查找结束。
[归纳总结]折半查找法在查找成功时和给定值进行比较的关键字个数至多是[log2n]+1;在查找不成功时和给定值进行比较的关键字个数最多也不超过[log2n]+1。
转载请注明原文地址:https://kaotiyun.com/show/BB3i777K
0

最新回复(0)